Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2012, 17:33   #1
moose123
Пользователь
 
Регистрация: 08.06.2012
Сообщений: 15
По умолчанию выполнение макроса на всех листах кроме первого

Всем привет!
Подскажите пожалуйста как сделать чтобы созданый макрос выполнялся на всех листах кроме первого
Спасибо
moose123 вне форума Ответить с цитированием
Старый 12.06.2012, 17:54   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

for i = 2 to sheets.count
with sheets(i)
...
end with
next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 12.06.2012, 20:23   #3
moose123
Пользователь
 
Регистрация: 08.06.2012
Сообщений: 15
По умолчанию

спасибо IgorGO но не хочет работать
проблема такая
если запускать на первом листе выдает ошибку "run-time error 13 type mismatch "
если запускать на другом тогда на нем обрабатывает а на других нет.

Я пробывал и ваш вариант, и другие тоже самое

вот как выглядит мой код
Код:
Sub myMacro2() 
    Dim li As Integer, lLastRow As Integer 
    Dim maxDate As Date 
    Dim YY As Long 
    Dim i As Integer 
    With ThisWorkbook 
         
        lLastRow = Cells(Rows.Count, 4).End(xlUp).Row 
        maxDate = Application.Max(Cells(2, 4), Cells(lLastRow, 4)) 
        For i = 2 To .Worksheets.Count 
            With .Worksheets(i) 
                 
                For li = 2 To lLastRow 
                    YY = (DateValue("31.12." & Year(Cells(li, 4))) - DateValue("01.01." & Year(Cells(li, 4))) + 1) 
                    If CLng(maxDate) - CLng(Cells(li, 3)) > YY Then 
                        Cells(li, 5) = 0 
                    End If 
                Next li 
            End With 
        Next i 
    End With 
     
End Sub
может проблема не в коде, а в чем то другом. я код добавил в модуль.
прикрепляю также файл с данными
Вложения
Тип файла: zip temp_vba.zip (21.5 Кб, 8 просмотров)
moose123 вне форума Ответить с цитированием
Старый 13.06.2012, 23:07   #4
ShAM66
Форумчанин
 
Регистрация: 24.02.2012
Сообщений: 160
По умолчанию

Если используете With, то ставьте точки в нужных местах. Например:
Код:
Sub myMacro2()
Dim li As Integer, lLastRow As Integer
Dim maxDate As Date
Dim YY As Long
Dim i As Integer
    For i = 2 To Worksheets.Count
        With Worksheets(i)
        lLastRow = .Cells(Rows.Count, 4).End(xlUp).Row
        maxDate = Application.Max(.Cells(2, 4), .Cells(lLastRow, 4))

    For li = 2 To lLastRow
       YY = (DateValue("31.12." & Year(.Cells(li, 4))) - DateValue("01.01." & Year(.Cells(li, 4))) + 1)
       If CLng(maxDate) - CLng(.Cells(li, 3)) > YY Then .Cells(li, 5) = 0
    Next li
       End With
    Next i
End Sub
ShAM66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формула для поиска значения в разных листах кроме текущего и подставления знчения из ячейки наденой строки но иного стол bygaga Microsoft Office Excel 1 28.10.2011 13:45
В почтовом ящике проверяет все письма, кроме первого voverrr Работа с сетью в Delphi 4 20.08.2011 17:38
В массиве A каждый элемент, кроме первого, заменить суммой всех предыдущих элементов aiktz Помощь студентам 7 11.10.2010 21:52
Запуск макроса на листе, который выполняется в других листах as-is Microsoft Office Excel 20 14.03.2010 15:06
Выполнение макроса во всех листах Bu$ter Microsoft Office Excel 18 14.11.2008 14:34