调试:如果不是IsError()那么

时间:2018-02-22 21:06:06

标签: excel vba excel-vba debugging

我已经设置了下面的宏,它通过搜索不同工作簿中的另一列来比较一列代码(工具),一次一行。如果没有代码匹配,宏将通过返回一天更改第一个工作簿中的日期,然后更改原始代码(在“工具”中),然后再次搜索。如果找到代码,宏应该通过向下移动到下一行结束:

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很陌生,所以我确定这个问题很简单。如果需要进一步的背景,我很乐意。感谢所有帮助,谢谢!

1 个答案:

答案 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