首页 > 解决方案 > 使用 ListObject 类型的属性无效

问题描述

我正在使用 VBA 在 Excel 中处理一个简单的用户表单,目的是将一个表(因此是一个 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

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

标签: excelvbaproperties

解决方案


您应该使用属性集而不是属性让。属性 let 应该只用于值类型,而对象类型应该使用属性集。

另请参阅在 VB6 中,Property Set 和 Property Let 有什么区别?


推荐阅读