我这里有这个模块,它是Workbook子程序。我不能为我的生活理解GenerateLimitSummary如何能够运行?有人可以在这里阐明流程吗?
Private LimitBool As Boolean
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If LimitBool Then Exit Sub
' use conditional formatting to highlight limit breaches
ApplyConditionalFormatting
' regenerate the summary limits sheet
LimitBool = True
GenerateLimitSummary
LimitBool = False
End Sub
答案 0 :(得分:1)
作者使用LimitBool来防止无限循环/堆栈溢出:
LimitBool
为False
,因此执行Workbook_SheetCalculate
的剩余部分LimitBool
设置为True
(确认后不是True
)GenerateLimitSummary
已执行。如果此例程由于某些原因迫使工作簿重新计算,则会再次触发Workbook_SheetCalculate
。但是,由于LimitBool
现在为True
*,因此第一次检查后,第二次调用此过程现已退出。如果它没有这个检查,它会再次调用GenerateLimitSummary
,然后触发重新计算等... GenerateLimitSummary
运行后,LimitBool
被设置回False
,因此可以再次运行(*) - 它有一个模块范围的范围,即它在不同的调用中保持它的值,而一个过程范围的范围(= sub中的Dimmed)将为每个调用创建一个新的变量