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
我将二维数组的内容(第一列 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