• ベストアンサー

自作マクロをセルの色が変わる度に再計算させるには

よろしくお願いします。 ExcelのVBAで、Application.Volatileのように、選択範囲内のセルの色が変更される度に再計算を行う命令はないでしょうか? セルの色ごとに値を集計するマクロを自作したのですが、セルの色を変更しても計算が実行されないため、不便で困っています。 どなたか解決策をご存知でしたらお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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.の方が安全です。

ryu-e
質問者

お礼

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

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 その手段や方法のところに、イベントやインスタンスを設ければよいのですが、直接、色の変更に対して結びつけるのは、発想としてはうまくないです。 Application.Volatile は入れてみたけれども、色を変更しても、ユーザー定義関数の値が変更しないから、という理由だと思います。 ユーザー定義関数は、引数が変更になった時に、値が変更するわけですから、それを利用すればよいのです。あまり難しく考えないほうが良いと思います。(実際にコードをみたら、また、私は、別の発想するかもしれませんが) セルの色ごとに値を集計するユーザー定義関数を作ったときに、そのユーザー定義関数の色番号を引数にしてあげればよいわけです。だから、色番号や色の名前で変更して計算しなおすような作り方に変えます。数式を変えずに、というと、複雑になってしまいます。 実際に、色で集計するユーザー定義関数を見せていただいたほうが良いかもしれません。

ryu-e
質問者

補足

回答ありがとうございます。 関数は下記のものを参考にしました。(質問には自作と書いていますね。すみません) http://takashixxx.blog88.fc2.com/blog-entry-41.html あと、今更ながら、セルの色が変わるごとに再計算させていたら、Application.Volatileを入れる以上に重いExcelファイルが出来上がるような気がしてきました・・・。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

無理なんじゃないですか? セルの色の変化が他のセルの入力結果で変わるとか、マクロで変化させるとかでない限り再計算はできないんじゃないでしょうか。

ryu-e
質問者

お礼

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

関連するQ&A