2016-11-04 7 views
0

2つのワークブックがあり、2つのワークブックの最初の列(A)を比較し、リストボックスに追加したいワークブック1シートの1列目に存在する)。私はコードを書いたが、私の問題は私のコードが正しいものを比較しないことである。誰かが私を助けることができれば、私はとても幸せになれます。2つの異なるワークブックの列Aを比較する方法

Sub Bouton1_Cliquer() 


Dim i As Long, lastA As Long, lastB As Long 

Dim compare As Variant 

Range("A:A").ClearFormats 

Dim sh1 As Worksheet 

Dim wkb As Workbook 

Set wkb = Workbooks.Open("C:\Users\ZAGLIZ\Documents\Classeur1.xltm") 

Set sh1 = wkb.Sheets("Feuil1") 

lastA = Range("A65536").End(xlUp).Row 

lastB = Range("B65536").End(xlUp).Row 

For i = 2 To lastA 

    compare = Application.Match(Range("A" & i), sh1.Range("B2" & lastB), 0) 

     If IsError(compare) Then 

UserForm1.ListBox1.AddItem "Libellé : " & Range("A" & i) & " du montant " & 

Range("C" & i) & " est ajouté !" 

     End If 
Next i 

UserForm1.Show 

End Sub 

答えて

0

説明とコードが少し矛盾しているようだと「右のものを比較しないよう私たちは質問にもう少し明快を使用することができ、問題の本当に十分説明的ではありません。あなたは、コードごとに、記述または列aから列bに従って、両方のシートの列aを比較していますか?とにかくあなたをそこに連れて来るための答えを提供しようとします:

- 具体的に宣言し、両方の書籍/シートの名前を使用して、あなたは間に曖昧な数回あなたのボタンが

配置されている場所によっては、シートや問題を引き起こしている可能性 - sh1.Range("B2" & lastB)は、あなたが何を考えてやっていません(B列ことになっている場合)、それは

- これが唯一の「1をチェックしますsh1.Range("B2:B" & lastB)する必要がありますそれはあなたの意図であるかどうかはあなたの質問からは分かりません/右のシートに欠けている値をチェックしています。他の方法で表示されていないものをチェックするために2番目の一致が必要な場合があります。または、代わりに他のシートを確認するロジックを切り替えたい場合があります。

編集:あなたのコメントに基づいて、そのモジュールにし、あいまいさを防ぐために、ボタンのクリックイベントからプロシージャ名を呼んで、彼らは目的に混乱してて、私は宣言した名前の一部を変更した:あなたのコメントについて

Sub ImInAModule() 

Dim i As Long, Sheet1Last As Long, Sheet2Last As Long 

Dim compare As Variant 

Dim origBook As Workbook 

Dim checkBook As Workbook 

Set origBook = ActiveWorkbook 

origBook.Sheets(1).Range("A:A").ClearFormats 

Set checkBook = Workbooks.Open("C:\Users\ZAGLIZ\Documents\Classeur1.xltm") 

Sheet1Last = origBook.Sheets(1).Range("A65536").End(xlUp).Row 

Sheet2Last = checkBook.Sheets(1).Range("A65536").End(xlUp).Row 

For i = 2 To Sheet1Last 

compare = Application.Match(origBook.Sheets(1).Range("A" & i), checkBook.Sheets(1).Range("A2:A" & Sheet2Last), 0) 

    If IsError(compare) Then 
UserForm1.ListBox1.AddItem "Libellé : " & origBook.Sheets(1).Range("A" & i) & " du montant " & origBook.Sheets(1).Range("C" & i) & " est ajouté !" 

    End If 
Next i 

UserForm1.Show 

End Sub 
+0

おかげで、私がしたいです両方のシートの列aを比較してください。この2つのシートは別のブックにあります。追加されたものを参照する必要があります(シート1には存在しないものを意味し、シート2に存在します)。 – Yassine

+0

[編集]を参照してください。これは、読み込んでいる他のシートの元のシート(ボタンを含む)から、リストに追加されていないすべてのシートが存在することを確認しています。 –

+0

あまりにも多くの仲間ありがとう、それはとてもうまく動作します – Yassine

関連する問題