比较VBA中的两个列表框

时间:2016-05-16 03:21:30

标签: excel vba excel-vba

我是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

不幸的是,程序只重复计算第一列。如何比较多列?

1 个答案:

答案 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显示消息,而是可以轻松地将其替换为您需要的任何代码。