我已经设置了下面的宏,它通过搜索不同工作簿中的另一列来比较一列代码(工具),一次一行。如果没有代码匹配,宏将通过返回一天更改第一个工作簿中的日期,然后更改原始代码(在“工具”中),然后再次搜索。如果找到代码,宏应该通过向下移动到下一行结束:
Sub YTM()
Dim N As Long
N = Cells(5, 24).End(xlDown).Row
'N = 7
Dim c As Range
Dim x As Integer
For Each c In Range("X2:X" & N)
c.Select
If IsError(c) Then
For x = 1 To 14
ActiveCell.Offset(0, -18).Value = ActiveCell.Offset(0, -18).Value - x/x
If Not IsError(c) Then Exit For
Next x
End If
Next c
End Sub
然而,我的VBA停止运行并希望我调试以下代码:
If Not IsError(c) Then
我似乎找不到原因。我对VBA很陌生,所以我确定这个问题很简单。如果需要进一步的背景,我很乐意。感谢所有帮助,谢谢!
答案 0 :(得分:0)
更明确地使用Value
,而没有任何选择/激活:
Sub YTM()
Dim N As Long, c As Range, x As Long
N = Cells(5, 24).End(xlDown).Row
For Each c In Range("X2:X" & N).Cells
If IsError(c.Value) Then
For x = 1 To 14
c.Offset(0, -18).Value = c.Offset(0, -18).Value - 1
DoEvents 'allow for calculation...
If Not IsError(c.Value) Then Exit For
Next x
End If
Next c
End Sub