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

Class 在excel vba中将对象用作类属性的正确语法是什么?,class,excel,vba,Class,Excel,Vba,我正在尝试将工作表对象用作vba类模块中的属性。她的“我在一个名为clsAgent的a类模块中拥有的: 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 pAgentS

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

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

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

Dim pAgentSheet作为工作表

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

请尝试修改后的测试文件:

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
类模块中不存在的变量/属性

我希望它至少有一点帮助