このコードの目的は、 の列を反復処理しsheet1
、各値が の行の値と一致するかどうかを確認することです。値が一致する場合は、から の5 行の情報を、その時点での特定の行にsheet2
コピーします。sheet2
sheet1
問題点:
- if ステートメントがある最初の行でエラー 1004 が発生します。
Next b
エラーも出ると思います
VBA コード:
For i = 8 To 17
For b = 7 To 21
If Sheets("Sheet1").Range(i, 2).Value = Sheets("Sheet2").Range(b, 1).Value Then
Sheets("Sheet2").Range("b,1:b,7").Copy Sheets("Sheet1").Range(i, 6)
Next b
End If
Next i
答え1
範囲の行と列を数値として指定するには、Cells
の代わりにを使用する必要がありますRange
。また、Next b
行はネストされたステートメント内にあるため、エラーが発生します。代わりに、 を使用して For ループを終了し、 をステートメントの外側に移動するIf
必要があります。Exit For
Next b
If
For i = 8 To 17
For b = 7 To 21
If Sheets("Sheet1").Cells(i, 2).Value = Sheets("Sheet2").Cells(b, 1).Value Then
Range(Sheets("Sheet2").Cells(b, 1), Sheets("Sheet2").Cells(b, 7)).Copy Sheets("Sheet1").Cells(i, 6)
Exit For
End If
Next b
Next i