Я создаю довольно большой макрос, который в настоящее время занимает 5 рабочих книг (которые, вероятно, со временем будут увеличиваться) с несколькими рабочими листами и объединяет их в одну рабочую книгу.
Теперь я бы подумал, что самый простой способ выполнить все различные задачи, которые мне нужно сделать, — это объявить глобальную ссылку на книгу. Но это просто не работает.
Итак, я объявил это как:
Public E1_workbook As Workbook
И затем, когда макрос запустится, он создаст его экземпляр.
Private Sub Begin()
...
Set E1_workbook = Workbooks.Open(Filename:="Workbook name")
...
'Do other stuff
...
Whatever
...
'Close workbooks and free up resources...
...
End Sub
А затем в другой подпрограмме я пытаюсь использовать книгу:
private sub Whatever()
E1_workbook.Worksheets("worksheet name").Select
Однако это не удастся, заявив, что «не удалось выбрать метод класса рабочего листа»
Несмотря на то, что я могу скопировать точную строку из подпрограммы «Whatever()» выше в подпрограмму «Begin()», и она работает счастливо.
Почему?
ТИА
(Названия рабочих тетрадей и листов изменены для защиты невиновных)