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

What is the best strategy in VBA to transfer a full array from one userform lists to another?

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

到目前为止,我已经成功地用数据 header 填充了 Listbox1,但在保留 listbox2 中的所有值时遇到了问题,而不仅仅是 header。我想在用户窗体级别创建一个私有变量来存储完整数组,但它似乎会生成 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

我的理解是 arr 属性 你的 class 是 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