Excel VBA"堆栈空间不足"错误

Jia*_*ang 2 excel vba excel-vba

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim b As Integer
    b = 0

    Dim cell As Range
    Dim rgn As Range

    Set rgn = Range("f2:f200")

    For Each cell In rgn
        If IsEmpty(cell) = False Then
            b = b + 1
        End If
    Next

    Range("d2").Value = b
End Sub
Run Code Online (Sandbox Code Playgroud)

嗨,我在尝试运行以下Excel VBA代码时遇到了问题.将弹出一个消息框,说有一个

"堆栈空间"

问题到行Set rgn = range("f2:f200"),然后另一个消息框会弹出并说出来

"对象'范围'的方法'值'失败"

我不知道出了什么问题......非常感谢你的帮助.

Ror*_*ory 7

问题是您正在更改事件中的单元格,这将再次触发事件,并再次,...

您需要暂时禁用事件:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim b As Integer
    b = 0

    Dim cell As Range
    Dim rgn As Range

    Set rgn = Range("f2:f200")

    For Each cell In rgn
        If IsEmpty(cell) = False Then
            b = b + 1
        End If
    Next
    Application.Enableevents = False
    Range("d2").Value = b
    Application.Enableevents = True
End Sub
Run Code Online (Sandbox Code Playgroud)