为什么我会收到运行错误&你能改正吗?

时间:2014-11-06 16:44:13

标签: vbscript

程序执行我想要的操作,但是我遇到了运行时错误。我不是程序员,所以我在寻求帮助。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Range("a1:a10")
        If (cell.Value) = "0" Then
            Range("b" & Target.Row).Clear
        End If
    Next
End Sub

1 个答案:

答案 0 :(得分:0)

错误28的原因是由Clear()引起的无限递归,导致后续的Worksheet_Change执行。

作为快速脏修补程序,您可以使用全局Boolean变量来跳过过多的Clear()调用。

Public isChanging As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    If isChanging = False Then
        isChanging = True

        Dim cell As Range
        For Each cell In Range("a1:a10")
            If (cell.Value) = "0" Then
                Range("b" & cell.Row).Clear
            End If
        Next

        isChanging = False
    End If
End Sub