Vba 刷新excel时堆栈空间不足

Vba 刷新excel时堆栈空间不足,vba,excel,stack,stack-overflow,Vba,Excel,Stack,Stack Overflow,我在一张VBA中运行下面的代码。我正在获取堆栈外消息。由于API连接,屏幕每2秒更新一次。所以它会每2秒触发一次代码。你能给我一个帮助吗?当API返回错误值时,我怎样才能清除内容?如果API返回值,我想触发一些其他宏(macro12)您可能正在创建多个计算事件: 在处理过程中禁用事件 Private Sub Worksheet_Calculate() Application.EnableEvents = False If IsError(Range("ValTest1").Value)

我在一张VBA中运行下面的代码。我正在获取堆栈外消息。由于API连接,屏幕每2秒更新一次。所以它会每2秒触发一次代码。你能给我一个帮助吗?当API返回错误值时,我怎样才能清除内容?如果API返回值,我想触发一些其他宏(macro12)

您可能正在创建多个计算事件:

在处理过程中禁用事件

Private Sub Worksheet_Calculate()
Application.EnableEvents = False

    If IsError(Range("ValTest1").Value) Then
            Sheets("Market Books (2)").Select
            Range("HistoricalData").Select
            Selection.ClearContents
    Else
       Call macro12
    End If

Application.EnableEvents = True
End Sub
基本上,SelectNewCell()解决了这个问题。它一定是在卸载如此多重复选择所占用的内存空间

我将SelectNewCell()放在同一张表中

Private Sub Worksheet_Calculate()

    If IsError(Range("ValTest1").Value) Then
            Sheets("Market Books (2)").Select
            Range("HistoricalData").Select

            Call SelectNewCell

    Else
        Call Macro12

    End If

End Sub

对于“堆栈外”的某些原因,堆栈是设置函数的连续内存地址空间。它包含返回地址、传递给它的参数和局部变量。每个属性或方法调用都是下面的函数。它从1MB开始,自动增长,直到遇到正在使用的内存,然后就无法增长。嵌套函数按调用顺序在堆栈上。递归函数如果太深,可能会填满堆栈。
Private Sub Worksheet_Calculate()

    If IsError(Range("ValTest1").Value) Then
            Sheets("Market Books (2)").Select
            Range("HistoricalData").Select

            Call SelectNewCell

    Else
        Call Macro12

    End If

End Sub
Private Sub Worksheet_Activate()
    Me.ScrollArea = "A1:M34"
End Sub