[[20130314140031]] 『ユーザー定義関数 色が変わったときの再計算』(usamiyu) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザー定義関数 色が変わったときの再計算』(usamiyu)Excel2003 Vista

 いつもみなさまに大変お世話になっております。また、ご指導していただけますか。

 VBAの練習のため、次のようなUDFを書いてみました。
単純に赤色の数値を合計するというものですが、これをワークシートに記述した後、
色が変わった場合、このコードでは自動で再計算しません。これを回避するには、
どうしたらよいでしょうか。
 本日、似たテーマを次のトピックで読んだのですが、書式のみが変わった場合、
の対応方法をご教示ください。どうぞよろしくおねがいいたします。

[[20130312054215]] 『セルに色がついているセルの数値を数えたい』

 Function RedTotal(r As Range) As Long
    Dim t As Long, iro As Long
    Dim c As Range

    t = 0
    For Each c In r
        iro = c.Font.Color
            If iro = vbRed Then
                If IsNumeric(c) Then
                    t = t + c.Value
                End If
            End If
    Next

    RedTotal = t

 End Function


 Function RedTotal(r As Range) As Long
    Dim t As Long, iro As Long
    Dim c As Range
    Application.Volatile'追加
    t = 0
    For Each c In r
        iro = c.Font.Color
            If iro = vbRed Then
                If IsNumeric(c) Then
                    t = t + c.Value
                End If
            End If
    Next
    RedTotal = t
 End Function
 
上記のようにして随時F9キー。
もしくは出来るだけ自動化するならThisWorkBookモジュールに下記
 
 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     Application.Calculate
 End Sub
 
選択セルが変わった時に再計算。
(みやほりん)

 みやほりんさん、こんにちは。お忙しいところ、ご回答ありがとうございます。

 なるほど、changeイベントで一度計算をさせ、それによって、volatileで自動再計算させるんですね。
どうも頭が固かったようで、セルの色だけ変えて、じっとしていて、changeイベントじゃだめなのかなぁ
とか思っていました・・ ^^;
 組み合わせて使ってみます。

 (usamiyu)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.