刷新excel时超出堆栈空间

时间:2015-02-01 12:46:32

标签: vba excel-vba stack stack-overflow excel

'Private Sub Worksheet_Calculate()
'
'    If IsError(Range("ValTest1").Value) Then
'            Sheets("Market Books (2)").Select
'            Range("HistoricalData").Select
'            Selection.ClearContents
'    else
'       call macro12
'    End If
'
'End Sub

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

2 个答案:

答案 0 :(得分:0)

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

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

在处理过程中禁用事件。

答案 1 :(得分:0)

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

基本上SelectNewCell()修复了这个问题。它必须通过如此多的重复选择来卸载内存空间

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

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