【发布时间】:2018-11-30 22:03:45
【问题描述】:
我有一个由字符串列表框生成的一维数组,我想用它来匹配主二维数组,其中第一列中的字符串和所有其他列中的数字。目标是创建第三个数组,其中包含匹配的字符串和来自 master 的相关数据。尽管主题不是未知的,但无法从此处搜索找到更好的解决方案。猜猜我在构建新数组时迷失了方向。
Private Sub ImportSelection()
Dim i, j, k, m, ListSize As Integer
Dim arr2() As String
Dim pArr As variant
Dim Size As Integer
Size = List2.ListCount
ReDim ListBoxContents(0 To Size) As String
For i = 1 To Size
ListBoxContents(i) = List2.list(i)
Next i
On Error GoTo eh
ReDim arr2(1 To List2.ListCount, 1 To 16)
For i = LBound(ListBoxContents) To UBound(ListBoxContents)
For j = LBound(pArr, 1) To UBound(pArr, 1)
If ListBoxContents(i) = pArr(i, 1) Then
arr2(k, m) = pArr(i, j)
k = k + 1
m = m + 1
End If
Next j
Next i
eh:
MsgBox Err.Description
End Sub
【问题讨论】:
-
您的代码有什么问题?
-
pArr从未被赋值。 -
为什么是私有的?为什么将 i, j, k, m 声明为变体?为什么没有声明 ListBoxContents?为什么在开发时使用 On Error?为什么没有将任何数据放入 pArr?为什么没有为 k 和 m 赋值?提供 List2 和 pArr 的一些示例数据,其中包含您尝试匹配的一些值,以便有人可以编写工作代码。
-
看起来你有很多问题要回答,OP :P
-
VBasic2008 仔细阅读:i、j、k、m 被声明为整数而不是变体。 pArr 在用户表单中保持为私有,以保留模块中的数据并将其从列表框传递到列表框。来自 donPablo 的关于循环的提示解决了所有问题。谢谢