此程式碼的目標是迭代 中的列sheet1
並檢查每個值是否與 中的行中的值相符sheet2
。如果值匹配,則將 5 行資訊從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
行會拋出錯誤,因為它位於巢狀If
語句內。相反,您應該使用Exit For
退出 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