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
。
尝试在 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
。