10.13 ワークブック内で計算したとき
ワークブック内にあるいずれかのワークシートの、どこかのセルで計算が行われたときに何かをしたいことはありませんか?例えば、計算結果が規定値をオーバーしていないかをチェックするとか…。

そんなときは、ワークシートのイベントWorkbook/SheetCalculateイベントへマクロを書いておけばOKです。
使用例
Workbook/SheetCalculateの使用例です。例では、どのワークシートにもセルA20に計算式が仕込んであるとします。そのようなときに、このセルの値(計算結果)が10000を越えたら警告メッセージを表示するようにしています。

ちなみに、引数のShが、ワークシートなど計算が発生した何者かを表すオブジェクトです。

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

    On Error GoTo ExitProc:

    Dim lngType As Long
    Dim i As Long

    'Excel 5.0ダイアログだと
    'ここでエラーが出るんですけど…(汗)
    'そのために、On Error…入れてます
    lngType = Sh.Type

    '他に、xlChart、xlExcel4MacroSheetなども判断できます
    '計算が行われた何者かがワークシートのときは処理します
    If lngType = xlWorksheet Then
       
       'セルA20の計算結果が100を越えたら警告メッセージを出します
       If CDbl(Sh.Range("A20").Value) > 10000 Then
         MsgBox "越えました(汗)"
       End If

    End If

ExitProc:

End Sub
 ※このエクセルマクロはワークブックのイベントへ書くマクロです
Copyright(C) 1999-2006 結城圭介。 All rights reserved