【问题标题】:Invalid use of property with type ListObject使用 ListObject 类型的属性无效
【发布时间】:2021-10-28 05:57:57
【问题描述】:

我正在使用 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

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

【问题讨论】:

    标签: excel vba properties


    【解决方案1】:

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

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

    【讨论】:

    • 你读懂了我的想法。我正要问这两者之间有什么区别。非常感谢!
    • :-) VBA 至少可以说是很特殊的。我曾经喜欢 VBA,但它很快就像小花盆里的植物一样长大了。我真的建议你转向 Python。我在使用 VBA 时遇到了各种困难,包括无法解释的 Excel 崩溃,我说 Excel 不是 VBA 脚本崩溃。祝您一切顺利。
    • 您是否知道为什么只能在 Property Set 函数中添加单个 Set 语句?
    • 别忘了标记为已回答甚至点赞。
    • “属性的单一集合语句”是什么意思?你能用一些代码来说明一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多