Access VBA尝试终止Function的返回值

时间:2019-07-07 13:13:36

标签: access-vba

我正在使用一些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”行。

1 个答案:

答案 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