在excel vba中将对象用作类属性的正确语法是什么?

时间:2015-04-08 02:05:19

标签: class excel-vba vba excel

我正在尝试将工作表对象用作vba类模块中的属性。她是我在一个名为clsAgent的类模块中所拥有的:

Public Property Get AgentSheet() As Worksheet
    Set AgentSheet = pAgentSheet
End Property

' error thrown on next two lines 
Public Property Set AgentSheet(AgentSheet As Worksheet)
    Set pAgentSheet = AgentSheet
End Property

当我使用下面的代码时,我在类模块中抛出了“编译错误:未定义的变量”:

Sub test_agent_class()
Dim agent1 As clsAgent
Set agent1 = New clsAgent

agent1.AgentSheetName = "agentsFullOutput.csv"

Set agent1.AgentSheet = Worksheets(agent1.AgentSheetName)
Debug.Print agent1.AgentSheet.Name

End Sub

1 个答案:

答案 0 :(得分:0)

请尝试在clsAgent模块文件中添加以下行:

Dim pAgentSheet As Worksheet

因为您创建的属性应该引用pAgentSheet模块的现有clsAgent字段。

请尝试修改测试文件:

Sub test_agent_class()

    Dim agent1 As clsAgent
    Set agent1 = New clsAgent

    Set agent1.AgentSheet = Worksheets("agentsFullOutput.csv")
    Debug.Print agent1.AgentSheet.Name

End Sub

我不是100%肯定,但看起来你引用的是AgentSheetName类模块中不存在的变量/属性clsAgent

我希望它至少有点帮助。