2017-06-29 4 views
0

私は文章とExcel VBA if文を書いていますが、なぜそれが動作していないのかわかりません。シート範囲の文の場合

私は「データ」と呼ばれる1枚のシートを持っています。列Iのいくつかの変数が、ActiveSheet行2、列B(番号2)と同じかどうかを確認したいと思います。私はそれが動作していないため自動的に終了する次のコードを使用しました。誰かアイデア?

例:あなたは、その列内のすべての項目を検証したい場合は、列Iでループを作成する必要があり

Sub test() 

If Sheets("Data").Range("I:I") = ActiveSheet(2, 2) Then 
MsgBox ("Yes") 
Else 
MsgBox ("No") 
End If 

End Sub 

答えて

2

。すでに成果を知っていれば、すべてのセルをループ避けるために、できるだけ早くあなたが不一致値を見つけるよう救済するためのフラグを使用します。

Dim x as long, result As Boolean 
result = True 

For x = 1 to 100 'let's say up to row 100 
    If Worksheets("Data").Range("I" & x).value <> ActiveSheet.Cells(2, 2).value Then 
     result = False 
    End If 
    If Not result Then Exit For 
Next x 

If result Then 
    MsgBox "Yes" 
Else 
    MsgBox "No" 
End If 
+0

ありがとう、結局のところ、私はMsgBoxesを必要としません。if文で何が起こるかを見るだけでした。 – Tox

1

あなたが単一で列全体(すなわち1048576値)を比較します値は明らかに機能しません。さらに、特定のセルにアクセスする場合は、ワークシートのCellsコレクションを使用する必要があります。ActiveSheet.Cells(2,2)

列Iの各セルを個別に比較する場合は、ループを使用します。検索値が列内のどこかに存在するかどうかだけを知りたい場合は、Range.Findメソッドを使用できます。

関連する問題