对 ListObject 类型的 属性 使用无效

Invalid use of property with type ListObject

我正在使用 VBA 在 Excel 中开发一个简单的用户窗体,目的是将 Table(因此是一个 ListObject)传递给用户窗体,以便它可以处理更改并拥有完成我想要的任务所需的所有数据。

现在我有两个属性,一个是包含操作类型的 String 类型,另一个是 Table.

截至目前,用户窗体代码如下:

Private msOperationType As String
Private msDataTable As ListObject

Property Let OperationType(sText As String)
    msOperationType = sText
    NewOperationTitle.Caption = "New operation: " & sText
    InformationLabel.Caption = "Fill out all the information regarding the " & sText & " operation"
End Property

Property Let DataTable(sDataTable As ListObject)
    msDataTable = sDataTable
End Property

Private Sub UserForm_Initialize()
    'Code here will do things
End Sub

在我的模块中,我有以下代码:

Dim AddOperationForm As UserForm1
Set AddOperationForm = New UserForm1
AddOperationForm.OperationType = "Add"
AddOperationForm.DataTable = Worksheets(14).ListObjects("Operations")
AddOperationForm.Show

然而,当我 运行 代码(从 sheet 中的按钮启动)时,我得到 Compile Error: Invalid use of property 并且 Property Let DataTable(sDataTable As ListObject) 被突出显示,但这并没有' 帮助我理解为什么我的代码存在问题。 OperationType 的 String 的等效代码工作正常,所以我不确定如何解决这个问题

您应该使用 属性 set 而不是 属性 let。 属性 let 应该只用于值类型而对象类型应该使用 属性 set.

另见 In VB6 what is the difference between Property Set and Property Let?