条件付書式で変更されたセルの色や文字の色を取得する

指定したセルの色の件数を数えるCountColorというユーザー定義関数が、当ブログの人気記事なわけですが、あれって条件付書式で変更されたセルの色は判断出来ないんですよね。

元々のセルの色しか取得出来てなくて、条件付書式が発動後の色を取得する方法が無いか試行錯誤した結果、
DisplayFormatオブジェクトがあったんだけど、これってユーザー定義関数で動かなくて・・・。

注釈

DisplayFormat プロパティはユーザー定義関数では機能しないことに注意してください。たとえば、セル内部の色を返すワークシート関数で、Range(n).DisplayFormat.Interior.ColorIndex のような行を使用したとします。このワークシート関数が実行したときに #VALUE! エラーが返されます。

または、特定の範囲の設定を返すワークシート関数では DisplayFormat プロパティを使用できません。ただし、DisplayFormat は、Visual Basic for Applications (VBA) から呼び出される関数では機能します。

(Microsoft公式より https://msdn.microsoft.com/ja-jp/library/office/ff838814.aspx)

ってことで困った。

DisplayFormat

DisplayFormatは条件付書式が発動後のセル色など情報を取得できるオブジェクト。おお!って思ったけど上記の注釈で萎え。

以下のようにマクロ走らせてカウント結果をMsgBoxで出す事は可能だけど。。。

 

ユーザー定義関数でやろうと思ったら考えられる方法はこうかな?

DisplayFormatは使えないので。

 

  1. セルに設定されている条件付書式の条件を引っ張ってくる
    FormatConditionsの中にFormula1やらがある
  2. VBA内で条件付書式の条件が発動するかどうか判定
  3. 判定の結果Trueだったら条件付書式で設定してあるセル色を取得
  4. そのセル色が指定のセル色かチェック、結果TrueならCount+1

 

こんな感じかなー。
1,2が面倒くさいんだよな。”セルの値が○○の場合”とかって簡単な条件であったらいいけど、”○○~△△の間”とか複数条件あったりすると、とかいろんなパターンを想定しておかないといけないので・・・。

ユーザー定義関数が発動しているかどうかのフラグがどっかに無いかなーって探したけど無さそう。

コメントをどうぞ

メールアドレスが公開されることはありません。

  • ▼お小遣い稼ぎしませんか?月3万円稼げます!▼
    日々の生活にhappyをプラスする|ハピタス
    クレジットカード・FX口座を作るだけ
日付 SUMIF VLOOKUP HLOOKUP DATE 検索 テンプレート コピペ フロー図 偏差値 印刷 MATCH COLUMN バーコード 作業効率UP XLSTART INDEX TODAY ユーザー定義関数 STDEV グラフ COUNTIF 図形 目標 NA() SUM 条件付き書式 無料 クイズ ワイルドカード
  • 関西在住の30代サラリーマン。事務職で毎日Excelと戯れています。
    システム導入なんて資金が無い!Excelでなんとかやりたい零細中小の社長さん・事務員さんの力になればと思います。
    詳しいプロフィール


PAGE TOP ↑