2016-05-16 123 views
-3

我是VBA的新手,请在这方面帮助我。VBA中两个列表框的比较

我的UserForm中有两个ListBox控件,每个控件都有两列。例如,ListBox1中

 

Name  Item 

A   20 

B   30 

和listbox2:

 

Name  Item 

A   20 

B   40 

当我点击一个命令,以下尝试比较两种列表框控件并返回该过程是否在数据的每列中的数据是正确的。我相信最好的方法是首先比较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

具体哪些部分是你有问题? –

+1

这听起来不像你要求的帮助......这听起来像你要求人们为你做。这不是这个网站的用途。如果你表明自己已经付出了一些努力,而且,我不知道,也许问一个问题,人们会更倾向于提供帮助。 – DDuffy

+0

这不是一个问题,它只是一个意向声明! – IIJHFII

回答

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一个消息,你可以很容易地与任何你需要的代码替换它。