VBA构造函数不起作用

时间:2015-05-08 11:41:41

标签: vba class oop excel-vba constructor

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

似乎是红色

我没有看到我错在哪里,这可能很明显。

提前致谢。

3 个答案:

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