我是VBA的新人。请在这件事上帮助我。
我的UserForm中有两个ListBox控件,每个控件有两列。例如,ListBox1
Name Item A 20 B 30
和listbox2:
Name Item A 20 B 40
当我单击CommandButton时,下面的过程尝试比较两个ListBox控件并返回每列数据中的数据是否正确。我认为最好的方法是先将ListBox1的第1列与ListBox2的第1列进行比较。如果它们相同,则比较两个ListBox控件的第二列。如果所有列都相同,则该过程应返回一个说“正确”的MsgBox。否则,程序应返回不匹配错误。这是我到目前为止尝试过的代码。
Private Sub CommandButton1_Click()
Dim p As Integer, Tabl()
Redim Tabl(0)
For i = 0 To ListBox1.ListCount - 1
p = p + 1
Redim Preserve Tabl(p)
Tabl(p) = ListBox1.List(i)
Next i
For i = 0 To ListBox2.ListCount - 1
If IsNumeric(Application.Match(ListBox2.List(i), Tabl, 0)) Then
Msgbox"Correct"
End If
Next i
End Sub
不幸的是,程序只重复计算第一列。如何比较多列?
答案 0 :(得分:0)
根据您的描述以及对代码执行情况的小评估,您可能会过度思考这一点。以下怎么样?
Private Sub CommandButton1_Click()
Dim myMsg As String
Dim byeMsg As String
myMsg = "Same name chosen."
byeMsg = "Those names don't match."
If ListBox1.Value = ListBox2.Value Then
MsgBox myMsg
Else
MsgBox byeMsg
End If
End Sub
当然,不是使用MsgBox
显示消息,而是可以轻松地将其替换为您需要的任何代码。