首页 > 解决方案 > VBA 中将完整数组从一个用户表单列表传输到另一个用户表单列表的最佳策略是什么?

问题描述

我将二维数组(第一列标题和所有列号)的内容传递给名为 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

标签: arraysvbalistclassuserform

解决方案


我的理解是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

推荐阅读