此代码的目的是遍历 中的一列,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