Я пытаюсь использовать функцию в VBA для создания нового экземпляра класса, который я определил.
Данные выглядят так:
Address 1 | Address 2
123 Sample Ln NW | 1
123 Sample Ln NW | 2
Класс был определяется в модуле класса с именем «Apt» следующим образом:
Option Explicit
Public Add1 As String
Public Add2 As String
Я хочу использовать функцию для возврата экземпляра этого класса (потому что я должен сделать это из нескольких различных подпрограмм).
Sub TestIssue2()
Dim i As Integer
i = 2
currApt = makeApt(i)
MsgBox (currApt.Add1 & ", " & currApt.Add2)
End Sub
Function makeApt(i As Integer) As Object
Dim x As New Apt
x.Add1 = Worksheets("Sheet1").Range("A" & i).Value
x.Add2 = Worksheets("Sheet1").Range("B" & i).Value
makeApt = x
End Function
Я получаю:
«Ошибка времени выполнения« 91 »: переменная объекта или переменная блока не установлена».
Что я пробовал:
- Я нашел это работает , если я определяю экземпляр внутри подпрограммы, так что это работает:
Sub TestIssue1()
Dim i As Integer
i = 2
Dim currApt As New Apt
currApt.Add1 = Worksheets("Sheet1").Range("A" & i).Value
currApt.Add2 = Worksheets("Sheet1").Range("B" & i).Value
MsgBox (currApt.Add1 & ", " & currApt.Add2)
End Sub
Поиск нескольких вариантов «использовать функцию VBA для создания нового экземпляра класса» привел меня к таким сайтам, как
этот учебник или
этот учебник , но оба говорят о хранении функций внутри классов, я не использую функцию для ее создания. Самый близкий вопрос, который я мог бы найти на этом сайте, это
этот вопрос , где некоторые ответы, кажется, указывают на то, что я хочу, возможно. Однако этот вопрос касается другой проблемы и, похоже, не дает ответа на этот вопрос.