1.Intro
Это мой первый проект VBA и мой первый пост. Поэтому, пожалуйста, прости меня, если ...
Он перепробовал все, что я мог найти в Интернете, и я мог думать в течение нескольких дней и, наконец, сдался.
Я сделал несколько реализаций классов так, как я понимал веб-рекомендации. К сожалению, этот (но другие) не работает. Если бы я отказался от инкапсуляции данных с помощью PRIVATE, это бы сработало, но, похоже, это не чистое программирование.
Я скопировал основную часть кода ниже. Этого должно быть достаточно, чтобы воспроизвести ошибку (91).
Я надеюсь, что кто-то знает некоторых магических персонажей. Я думаю, это не так много.
Спасибо заранее,
Mounty
2. Инфраструктура
ПК: Win7Enterprise-64 SP1, Excel 365 ProPlus-32 (1808)
3. Код
Модуль класса
Option Explicit
Private resWrkBook As Workbook 'resultXLS - Result workbook
‘Properties
Public Property Let resultXLS(ByVal resultXLS As Workbook) 'Write value to class variable
Set resWrkBook = resultXLS 'Assign value to property
End Property
Public Property Get resultXLS() As Workbook 'Read value from class variable
Set resultXLS = resWrkBook 'Return value from property
End Property
Модуль программирования
Option Explicit
Public Sub main()
Dim wbs As XlsClass_Module 'declaration
‘Short (version S)
Set wbs.resultXLS = Workbooks.Add '=> Error 91
‘Long (version L, alternative)
Dim wrk As Workbook
Set wbs = New XlsClass_Module 'instance of Workbook Class
Set wrk = Workbooks.Add
Set wbs.resultXLS = wrk '=> Error 91
End Sub