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

指定したセルの色の件数を数える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が面倒くさいんだよな。”セルの値が○○の場合”とかって簡単な条件であったらいいけど、”○○~△△の間”とか複数条件あったりすると、とかいろんなパターンを想定しておかないといけないので・・・。

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

コメントをどうぞ

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

  • ▼お小遣い稼ぎしませんか?▼ 日々の生活にhappyをプラスする|ハピタス

    クレジットカード・FX口座を作るだけで簡単に3万円GETです。一切支出はありません。

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


PAGE TOP ↑