简单的Worksheet_Calculate触发“Out of Stack Space”错误

时间:2014-12-22 06:02:39

标签: excel excel-vba vba

基本上,我尝试做的是在工作表打开时记录特定单元格的值(在本例中为B26),然后将B26的值复制到单元格{ {1}}如果B25的值发生变化。

B26我有以下代码:

Module1

Public PrevVal As Variant 我有以下代码:

ThisWorkbook

Private Sub Workbook_Open() PrevVal = Sheet13.Range("B26").Value End Sub 中,我有以下代码:

Sheet13

奇怪的是,这段代码似乎工作正常,然后开始给我一个&#34; Out of Stack Space&#34;看似错误的错误(Private Sub Worksheet_Calculate() Application.ScreenUpdating = False If Range("B26").Value <> PrevVal Then Range("B25").Value = Range("B26").Value PrevVal = Range("B26").Value End If End Sub 代码行出错。

如果有帮助,单元格B26是一个返回&#34; low&#34;,&#34; moderate&#34;或&#34; high&#34;基于另一个细胞的价值。这是公式:

If Range("B26").Value <> PrevVal Then

我知道为什么我突然收到这个错误?

1 个答案:

答案 0 :(得分:2)

PreVail范围更新时,您的代码在连续循环中调用自身,您可以通过禁用Events来关闭代码循环(因此Calculate事件仅运行一次,包括 PrevVal 与B26不同的任何更新

有关 Out of Stack Space 错误的一般信息,请参阅此MSFT link

好问题!

Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False

If Range("B26").Value <> PrevVal Then
    Application.EnableEvents = False
    Range("B25").Value = Range("B26").Value
    PrevVal = Range("B26").Value
    Application.EnableEvents = True
End If

End Sub