2016-06-01 7 views
0

私は自分のコードのこの部分でいくつかのトラブルを持っていると私は1行VBAが自動化

If Workbooks("A.xlsm").Sheets("1").Cells(i, 14).Value > 100000 _ 
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(2, 5) _ 
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(3, 5) _ 
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(4, 5) _ 
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(5, 5) _ 
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(6, 5) _ 
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(7, 5) _ 
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(8, 5) _ 
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(9, 5) _ 
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(10, 5) _ 
Then ... 

変更する唯一の変数でこのアクションをまとめるための非常に簡単な方法があると確信している行番号です各行の末尾に あなたの助けを前もっておかげで、私はそれを自動化する簡単な方法があると確信しています

答えて

0

あなたはあなたのコードサンプルにエラーが発生している可能性があります。その後、値が範囲内か存在するかどうかを確認するためにマッチを()を使用します。 そうでなければ、複数の行を見ているAndステートメントの束を作成しています.5つのセルは一致するものを探しています。

この場合、複数の行の5つのセルのそれぞれが等しく、比較する単一の(i、6)値に一致する必要があります。

このコードが正しければ、合格または不合格の場合と同じように1つのチェックを行うだけで、他のすべての "And"行も同様になります。

+0

あなたが正しいです、私は代わりに "Or"を使用していたはずです。 – user6366207

2

まず、繰り返すタイピングを止めるためにブロックを使用します。

With Workbooks("A.xlsm") 
If .Sheets("1").Cells(i, 14).Value > 100000 _ 
    And IsError(Application.Match(.Sheets("1").Cells(i, 6), .Sheets("B").Range(.Sheets("B").Cells(2, 5), .Sheets("B").Cells(10, 5)), 0)) Then 

    'the rest of your code 

End With 
+0

ありがとう、それは非常にうまくいきます! – user6366207

+0

しかし、同じ時間に別のExcelファイルを開くと動作しません。 – user6366207

+0

@ user6366207ブックの中にあるすべての 'Sheets(" ... 'の前に' .'を置く限り、 「With Worbook( "...' –