Перебор листов книги и передача их как параметра. Run-time error '438' - VBA
Формулировка задачи:
Привет!
Объясните, пожалуйста, почему не работает это код?
f2 (sh) выдает Run-time error '438': Object doesn't support this property or method.
Не пойму почему. Входной параметр f2 указан как Worksheet. Элементы в переборе For Each как Worksheet из коллекции Worksheets, или нет. Ничего не понимаю...
А дебаггер показывает что переменная sh это Variant, а не Worksheet
Если переделать тело цикла на
то дебаггер показывает, что sh1 это Worksheet. Но ошибка остается...
Листинг программы
- Sub f1()
- For Each sh In Worksheets
- f2 (sh)
- Next
- End Sub
- Sub f2(sheet As Worksheet)
- MsgBox sh.Name
- End Sub
Листинг программы
- Dim sh1 As Worksheet
- Set sh1 = sh
- f2 (sh1)
Решение задачи: «Перебор листов книги и передача их как параметра. Run-time error '438'»
textual
Листинг программы
- Sub Main()
- Dim c As New Collection, sh As Worksheet
- For Each sh In Worksheets
- c.Add sh
- Next
- For Each sh In c
- SubMain sh
- Next
- End Sub
- Sub SubMain(sh As Worksheet)
- MsgBox sh.Name
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д