2017-11-01 18 views
0

現在、私は償還的な方法でコードを書いていますが、私は今どのように同じ結果を達成するために複数の範囲でループを使うことができますか?複数の範囲でVBA Excelを反復処理する

For Eachに2つの範囲を指定するとエラーになります。

Sub test_Click() 

If (Range("C3").Value <> Range("C6").Value) Then 
    Range("B3").Value = 5 

End If 

If (Range("D3").Value <> Range("D6").Value) Then 
    Range("C3").Value = 5 

End If 


If (Range("E3").Value <> Range("E6").Value) Then 
    Range("D3").Value = 5 

End If 

End Sub 

答えて

3

For Eachステートメントでエラーが発生する理由はありません。 (しかし、その後、再び、私はあなたが「私はそれぞれの場合に二つの範囲を置けば」によって何を意味するのか理解していません。)

Sub test_Click() 
    Dim cel As Range 
    For Each cel in Range("C3:E3").Cells 
     If cel.Value <> cel.Offset(3, 0).Value Then 
      cel.Offset(0, -1).Value = 5 
     End If 
    Next   
End Sub 
+0

'Range(" C3:E3 ")を追加したのは良いことです。そうでなければExcelは' Cells'をループする方法を知らないでしょう;)JK –

+0

@ShaiRado '.Cells ''行ごとに(1:10 ")'(一度に一度にセルの代わりに一度に 'Row'を処理するのがデフォルトです)のような何かをすると、私が誤ってそれを含むのを忘れるのをやめさせます。 。だから私の狂気に**いくつかの**方法があります! :D – YowE3K

1

は、forループでオフセットをコマンドで行うことができる

For i = 0 To 3 
    If (Range("C3").Offset(0, i).Value <> Range("C6").Offset(0, i).Value) Then 
     Range("B3").Offset(0, i).Value = 5 
    End If 
Next 
関連する問題