0

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
4

1 に答える 1

1

作成者は LimitBool を使用して、無限ループ/スタック オーバーフローを防ぎます。

  • 最初にLimitBoolFalseであるため、 の残りの部分Workbook_SheetCalculateが実行されます
  • 現在、LimitBoolに設定されていますTrue(そうではないことを確認した後True)
  • GenerateLimitSummary実行されます。このルーチンが何らかの理由でワークブックの再計算を強制すると、Workbook_SheetCalculate再びトリガーされます。ただし、LimitBool現在True* のように、このプロシージャへの 2 番目の呼び出しは、最初のチェックの後に Exited になります。このチェックがない場合は、再び を呼び出しGenerateLimitSummary、再計算などをトリガーします...
  • GenerateLimitSummary実行後、LimitBoolに戻されるFalseため、再度実行できます。

(*) - モジュール全体のスコープを持ちます。つまり、さまざまな呼び出し間で値を保持しますが、プロシージャ全体のスコープ (= サブで淡色表示) では、呼び出しごとに新しい変数が作成されます。

于 2013-01-16T22:59:07.960 に答える