【问题标题】:What is the best strategy in VBA to transfer a full array from one userform lists to another?VBA 中将完整数组从一个用户表单列表传输到另一个用户表单列表的最佳策略是什么?
【发布时间】:2019-04-29 17:29:11
【问题描述】:

我将二维数组的内容(第一列标题和所有列号)传递给名为 Listbox1 的用户窗体。在这里,用户选择传递给 Listbox2 的项目,最后用户激活一个将数据发送到 Web 服务的进程。

到目前为止,我已经设法仅使用数据标题填充 Listbox1,但在保留 listbox2 中的所有值时遇到了问题,而不仅仅是标题。我想在用户窗体级别创建一个私有变量来存储完整的数组,但它似乎会产生与 let/get 属性的类型不匹配问题。

处理包含两个列表的完整数据集的最佳策略是什么?


Private pArr As Variant
Public Property Get arr() As Variant
    Set arr = pArr
End Property
Public Property Let arr(Value As Variant)
    Set pArr = Value
End Property

Private Sub LoadModelData()

    Dim i As Integer
    Dim myArray As Variant
    Dim v As Variant
    Dim mystring As String

    myArray = ReadModelData(this is the function returning the array data from a range)

    Set pArr = myArray

    For i = LBound(myArray) To UBound(pArr)
        If pArr(i)(1, 1) <> vbNullString Then
            frmListModelItms.List1.AddItem (pArr(i)(1, 1))
        End If
    Next i

End Sub

【问题讨论】:

    标签: arrays vba list class userform


    【解决方案1】:

    我的理解是 arr 您班级的属性是 array,而不是 object

    因此不要使用Set关键字:

    Private pArr As Variant
    
    Public Property Get arr() As Variant
        arr = pArr
    End Property
    
    Public Property Let arr(Value As Variant)
        pArr = Value
    End Property
    

    【讨论】:

    • 对。由于某些原因,我一直认为数组是对象。感谢您的帮助!
    • 不客气。如果我的回答解决了您的问题,您可以考虑将其标记为已接受。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多