VBA 构造函数不工作

VBA constructor not working

尝试在 vba 中创建一个带有构造函数的对象,我找到了答案: pass argument to constructor in vba

但我无法让它工作。我错过了什么。

我使用 excel 2010 vba 编辑器。当我启动 MacroTest() 时,我在 InitiateProperties 行上得到一个 "compile error, syntax error",这里的代码:

in TestClass(使用模块 class 创建):

Option Explicit

Private pInfo1 As String
Private pInfo2 As String

Public Sub InitiateProperties(info1 As String, info2 As String)
   pInfo1 = info1
   pInfo2 = info2
End Sub

in factory(创建为模块)

   Set CreateTestClass = New TestClass
   CreateTestClass.InitiateProperties(info1, info2)
End Function

模块 1*

Sub MacroTest()
   Dim myObject As TestClass
   myObject = CreateTestClass("hello", "bye")
End Sub    

行:

CreateTestClass.InitiateProperties(info1, info2)

看起来是红色的

我没看出我哪里错了,这可能很明显。

提前致谢。

尝试删除 ( ) 我假设 info1 和 info2 作为参数传递给工厂中的函数并且是字符串值。

替换:

Set CreateTestClass = New TestClass
   CreateTestClass.InitiateProperties(info1, info2)
End Function

EITHER:

Set CreateTestClass = New TestClass
   CreateTestClass.InitiateProperties info1, info2 
End Function

这个:

 Set CreateTestClass = New TestClass
  Call CreateTestClass.InitiateProperties(info1, info2)
End Function

正如其他评论中所讨论的,您需要替换:

CreateTestClass.InitiateProperties(info1, info2)

Call CreateTestClass.InitiateProperties(info1, info2)

您还会在 Module1 中发现一个错误,其中:

myObject = CreateTestClass("hello", "bye")

应改为:

Set myObject = CreateTestClass("hello", "bye")

因为您正在将 CreateTestClass 工厂函数返回的对象的引用分配给 myObject