基本上,我尝试做的是在工作表打开时记录特定单元格的值(在本例中为B26
),然后将B26
的值复制到单元格{ {1}}如果B25
的值发生变化。
在B26
我有以下代码:
Module1
在Public PrevVal As Variant
我有以下代码:
ThisWorkbook
在Private Sub Workbook_Open()
PrevVal = Sheet13.Range("B26").Value
End Sub
中,我有以下代码:
Sheet13
奇怪的是,这段代码似乎工作正常,然后开始给我一个" Out of Stack Space"看似错误的错误(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
我知道为什么我突然收到这个错误?
答案 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