2017-12-10 27 views
-1

Workbook_SheetCalculateイベントを試してみましたが、ワークシートを再計算しましたが、動作しませんでした。VBA Workbook_SheetCalculateイベントをトリガする方法は?

このイベントをトリガーする方法はありますか?ここで

+0

他のブックイベントは正しく機能していますか? sheet_recalculateをよく使うべきだと思います –

+0

すべてを計算するには 'Application.CalculateFull'または' Application.CalculateFullRebuild'を使用してください –

+0

@ TSion.DP、VBAには(sheet_recalculate)というイベントはありません。イベントは正常に機能します! –

答えて

1

は一例であり、イベントのためのワークシートに次のコードを持っている:

Private Sub Worksheet_Calculate() 
MsgBox "Calculating" 
End Sub 

そしてシートに、任意の細胞において、=RAND()

を入力する式は再計算を引き起こし、トリガイベント。

または標準モジュールから次のコマンドを使用します。

Public Sub Test() 

'Application.Calculate ''could use this event for the workbook 

With Worksheets("Sheet5") 'sheet containing the event code 

    .Calculate 

End With 

End Sub 

キーは、例えば計算するシートの中で何かがあるということのようです=RAND()

私はいくつかの点で、他のポストから思い出し、以下Excel’s Smart Recalculation Engine

へのリンクが素早く抽出は言う:

Excelが正常にのみ可能セルの最小数を計算します。

Excelのスマート再計算エンジンは、通常、変更を追跡してのみ変更されているか、再計算を必要としてフラグ付けされている

  • 細胞、数式、値や名前を再計算することで計算 時間を最小限に抑えます。
  • 再計算が必要な他のセル、式、名前または値に依存するセル。

ので、あなただけのシートで定数を持っていた場合、あなたはWorksheet.Calculateを発行する場合でも、メッセージボックスは表示されません。あなたはシートから=RAND()を取り除き、セルに1を入れるだけでこれをテストできます。私は2枚の不揮発性式シートごと、およびこのワークブックモジュールで持っている場合

0

Private Sub Workbook_SheetCalculate(ByVal Sh As Object) 
    Debug.Print Sh.Name 
End Sub 

を私は呼び出しの両方のシート名を参照してください。

Application.CalculateFull 

か:

Application.CalculateFullRebuild 

が、出力なしと:

Application.Calculate 

シートの1つに揮発性の式を追加すると、Application.Calculateを呼び出すときにそのシートが取得されます。

まだ問題が残っている場合は、イベントコードやあなたのシートにある種類の数式など、いくつかの詳細を投稿する必要があります。

関連する問題