2016-05-16 14 views
-3

Ich bin neu bei VBA.So bitte helfen Sie mir in dieser Angelegenheit.Vergleich von zwei Listbox in VBA

Meine UserForm enthält zwei ListBox-Steuerelemente mit jeweils zwei Spalten. Zum Beispiel ListBox1

 

Name  Item 

A   20 

B   30 

und ListBox2:

 

Name  Item 

A   20 

B   40 

Wenn ich ein Befehlsschaltfläche klicken, das Verfahren unter Versuchen sowohl ListBox Kontrollen und kehrt zu vergleichen, ob die Daten in jeder Spalte von Daten korrekt . Ich glaube, der beste Ansatz wäre, zuerst die Spalte 1 von ListBox1 mit der Spalte 1 von ListBox2 zu vergleichen. Wenn diese identisch sind, vergleichen Sie die zweiten Spalten der beiden ListBox-Steuerelemente. Die Prozedur soll eine MsgBox zurückgeben, die "Richtig" sagt, wenn alle Spalten identisch sind. Andernfalls sollte das Programm einen Mismatch-Fehler zurückgeben. Hier ist der Code, den ich bisher ausprobiert habe.

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 

Leider berechnet das Programm nur die erste Spalte wiederholt. Wie kann ich mehrere Spalten vergleichen?

+0

Spezifisch welchen Teil von denen haben Sie ein Problem mit? –

+1

Das hört sich nicht so an, als würdest du um Hilfe bitten ... Das hört sich so an, als würdest du verlangen, dass die Leute es für dich tun. Dafür ist diese Seite nicht da. Wenn Sie zeigen, dass Sie sich selbst etwas Mühe gegeben haben, und, ich weiß nicht, vielleicht eine Frage stellen, würden die Leute eher geneigt sein zu helfen. – DDuffy

+0

Dies ist keine Frage, es ist nur eine Absichtserklärung! – IIJHFII

Antwort

0

Basierend auf Ihrer Beschreibung und einer kleinen Bewertung dessen, was Ihr Code tut, können Sie dies überdenken. Wie wäre es mit dem Folgenden?

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 

Natürlich stattdessen eine Nachricht anzuzeigen MsgBox verwenden, könnten Sie genauso gut ersetzen es mit jedem Code, den Sie brauchen.