プロが教えるわが家の防犯対策術!

よろしくお願いします。

ExcelのVBAで、Application.Volatileのように、選択範囲内のセルの色が変更される度に再計算を行う命令はないでしょうか?

セルの色ごとに値を集計するマクロを自作したのですが、セルの色を変更しても計算が実行されないため、不便で困っています。

どなたか解決策をご存知でしたらお教えください。

A 回答 (3件)

こんばんは。



私が今、思いつく方法としては、2つあります。

1.

'Sheetモジュール
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Application.Calculate
End Sub

こうして、再計算させる。

2.
'標準モジュール
Public myClass As Class1
Sub Auto_Open()
 Set myClass = New Class1
 Set myClass.myCmdbar = Application.CommandBars
End Sub


'クラスモジュール Class1
Public WithEvents myCmdbar As Office.CommandBars
Private Sub myCmdbar_OnUpdate()
 Application.Calculate
End Sub

ただし、常に、イベントが動いていますから、他のブックが使いにくいです。

1.の方が安全です。
    • good
    • 0
この回答へのお礼

ありがとうございます!
この方法でやってみます! ><

お礼日時:2009/02/11 15:35

こんばんは。



その手段や方法のところに、イベントやインスタンスを設ければよいのですが、直接、色の変更に対して結びつけるのは、発想としてはうまくないです。

Application.Volatile は入れてみたけれども、色を変更しても、ユーザー定義関数の値が変更しないから、という理由だと思います。

ユーザー定義関数は、引数が変更になった時に、値が変更するわけですから、それを利用すればよいのです。あまり難しく考えないほうが良いと思います。(実際にコードをみたら、また、私は、別の発想するかもしれませんが)

セルの色ごとに値を集計するユーザー定義関数を作ったときに、そのユーザー定義関数の色番号を引数にしてあげればよいわけです。だから、色番号や色の名前で変更して計算しなおすような作り方に変えます。数式を変えずに、というと、複雑になってしまいます。

実際に、色で集計するユーザー定義関数を見せていただいたほうが良いかもしれません。

この回答への補足

回答ありがとうございます。
関数は下記のものを参考にしました。(質問には自作と書いていますね。すみません)

http://takashixxx.blog88.fc2.com/blog-entry-41.h …

あと、今更ながら、セルの色が変わるごとに再計算させていたら、Application.Volatileを入れる以上に重いExcelファイルが出来上がるような気がしてきました・・・。

補足日時:2009/02/01 21:58
    • good
    • 0

無理なんじゃないですか?


セルの色の変化が他のセルの入力結果で変わるとか、マクロで変化させるとかでない限り再計算はできないんじゃないでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはり難しいのでしょうか・・・。もうちょっと頑張ってみます。

お礼日時:2009/02/01 22:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A