問題: Worksheet_Calculate() 無限遞迴

前一陣子, 寫了一隻小程式, 程式語言的結構, 變數宣告與引用皆無問題,

但程式在啟動後, 沒多久, Excel 就自動關閉,

後來才發現, 原來每觸發一次 worksheet_Calculate() , 程式就會自動跳掉再去執行

worksheet_Calculate().

舉個例子:

工作表1

儲格 A1 = 3 , B1=5 , C1=A1 * B1

當您改變 A1 時, 就會觸發 Worksheet_Calculate()

Private Sub Worksheet_Calculate()

  Debug.Print '工作表 1 啟動'

  Worksheets('sheet1').Range'A1') = Rnd * 500

  Debug.Print '工作表 1 啟動之後'

End Sub

請執行上述程式, 或按下F8 去追踪.

=====================================================

問暊:

是否能讓 worksheet_calculate() 內的程式碼,能夠徹底的執行.

而不是只是改變了 某個儲存格的值之後, 又重新觸發worksheet_Calculate().

註:

1. 上述程式碼很簡單, 可以跑完不會當機, 但小弟的原始程式, 一啟動不到五秒,

Excel 就掛了.

2. 程式的結構沒有問題.

1 Answer

Rating
  • 1 decade ago
    Favorite Answer

    Private Sub Worksheet_Calculate()

    Application.EnableEvents = False

    Debug.Print "工作表 1 啟動"

    Worksheets("sheet1").Range("A1") = Rnd * 500

    Debug.Print "工作表 1 啟動之後"

    Application.EnableEvents = True

    End Sub

Still have questions? Get your answers by asking now.