2016-05-16 17 views
-3

私はVBAで新しくなりました。VBAでの2つのリストボックスの比較

私のUserFormには、2つの列を持つ2つのListBoxコントロールがあります。例えば、ListBox1を

 

Name  Item 

A   20 

B   30 

とlistbox2:私はコマンドボタンをクリックすると

 

Name  Item 

A   20 

B   40 

、以下の手順は、データの各列のデータが正しいか否かをリストボックスコントロールと戻りの両方を比較することを試みます。最良の方法は、ListBox1のColumn1とListBox2のColumn1を最初に比較することです。それらが同一である場合、両方のListBoxコントロールの2番目の列を比較します。このプロシージャは、すべての列が同一である場合に「訂正」と表示されている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を使用してメッセージを表示するので、あなただけのように簡単にあなたが必要なすべてのコードに置き換えることもできます。