尝试在vba中使用构造函数创建一个对象,我发现答案: pass argument to constructor in vba
但我不能让它奏效。我错过了什么。
我使用excel 2010 vba编辑器。当我启动MacroTest()时,我在InitiateProperties行上遇到“编译错误,语法错误”,代码在这里:
TestClass 中的(使用modul类创建):
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
在工厂(创建为模块)
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)
似乎是红色
我没有看到我错在哪里,这可能很明显。
提前致谢。
答案 0 :(得分:2)
正如其他评论中所讨论的,您需要替换:
CreateTestClass.InitiateProperties(info1, info2)
与
Call CreateTestClass.InitiateProperties(info1, info2)
您还会在Module1
中找到错误:
myObject = CreateTestClass("hello", "bye")
应为:
Set myObject = CreateTestClass("hello", "bye")
因为您要将CreateTestClass
工厂函数返回的对象的引用分配给myObject
。
答案 1 :(得分:1)
替换:
Set CreateTestClass = New TestClass
CreateTestClass.InitiateProperties(info1, info2)
End Function
使用 EITHER :
Set CreateTestClass = New TestClass
CreateTestClass.InitiateProperties info1, info2
End Function
OR 这个:
Set CreateTestClass = New TestClass
Call CreateTestClass.InitiateProperties(info1, info2)
End Function
答案 2 :(得分:0)
尝试删除()我假设info1和info2作为参数传递给工厂中的函数并且是sting值。