我正在使用一些VBA代码构建Access数据库。 我做了一个非常简单的类,并创建了一个该类实例的函数。执行此函数将产生错误91:对象变量或未设置带块变量。调试后,我发现Access尝试终止新创建的对象,终止终止函数会导致错误。
我的意图是为MyObject创建工厂,以便创建对象并使用给定的参数对其进行初始化。我已经剥离了所有这些以查找问题,现在我很傻。有人可以指出我在做什么错,因为我不知道了。
我创建的类称为MyObject:
Private Sub Class_Initialize()
'does literally nothing
End Sub
Private Sub Class_Terminate()
'does literally nothing
End Sub
我用来初始化类的函数,位于另一个模块中:
Public Function createMyObject(someArg As String) As MyObject
Set createMyObject = New MyObject
End Function
我显然希望函数createMyObject返回MyObject的实例,但是它给我一个错误91。调试导致我进入MyObject中的Class_Terminate Sub,在该错误处引发了“ end sub”行。
答案 0 :(得分:0)
尝试使用属性:
Option Compare Database
Option Explicit
Private mTest As Variant
Private Sub Class_Initialize()
'does literally nothing
End Sub
Private Sub Class_Terminate()
'does literally nothing
End Sub
Public Property Get Test() As Variant
Test = mTest
End Property
Public Property Let Test(ByVal NewValue As Variant)
mTest = NewValue
End Property
然后:
Public Function CreateMyObject(SomeArg As String) As MyObject
Set CreateMyObject = New MyObject
CreateMyObject.Test = SomeArg
End Function
您可以这样称呼:
Set o = CreateMyObject("Joe")
Debug.Print o.Test