Перебор листов книги и передача их как параметра. Run-time error '438' - VBA

Узнай цену своей работы

Формулировка задачи:

Привет! Объясните, пожалуйста, почему не работает это код?
Листинг программы
  1. Sub f1()
  2. For Each sh In Worksheets
  3. f2 (sh)
  4. Next
  5. End Sub
  6. Sub f2(sheet As Worksheet)
  7. MsgBox sh.Name
  8. End Sub
f2 (sh) выдает Run-time error '438': Object doesn't support this property or method. Не пойму почему. Входной параметр f2 указан как Worksheet. Элементы в переборе For Each как Worksheet из коллекции Worksheets, или нет. Ничего не понимаю... А дебаггер показывает что переменная sh это Variant, а не Worksheet Если переделать тело цикла на
Листинг программы
  1. Dim sh1 As Worksheet
  2. Set sh1 = sh
  3. f2 (sh1)
то дебаггер показывает, что sh1 это Worksheet. Но ошибка остается...

Решение задачи: «Перебор листов книги и передача их как параметра. Run-time error '438'»

textual
Листинг программы
  1. Sub Main()
  2.     Dim c As New Collection, sh As Worksheet
  3.     For Each sh In Worksheets
  4.         c.Add sh
  5.     Next
  6.     For Each sh In c
  7.         SubMain sh
  8.     Next
  9. End Sub
  10.  
  11. Sub SubMain(sh As Worksheet)
  12.     MsgBox sh.Name
  13. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы