• ベストアンサー

エクセルVBAで条件付書式の色を取得

セルに条件付書式で書式設定してあります。 A1は「値」100以下 A2は「値」500以下 A3は「値」1~10の間 B1は「数式」で=B1<A1 以下さまざまな数式があります。 条件に一致すると、セルの文字が「赤」になります。 このとき、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox Target.Font.ColorIndex End Sub を実行しても、ColorIndexは、赤の「3」ではなく「-4105」と表示されます。 「-4105」は何もフォントの色を指定してないセルでも同じく表示されます。 質問1.条件付書式で、条件が一致して表示されたフォントの色は取得できないのでしょうか? 質問2.-4105とは何でしょうか?

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

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

merlionXXさん、いつも、スレッドでおさがわせしてすみません。 今回は、別なところで、KenKen_SPさんのコードに感化されまして、私としては、良い勉強させていただいております。 さて、 >No4で教えていただいたコートが「数式が」しか対応しないなら、条件付書式の方を「セルの値が」を「数式が」に変えてやればいいわけですよね? #9 のコードは、「数式が」でも、「セルの値が」でも、両方使えるはずだと思って作っております。 If .FormatConditions(i).Type = 2 というところで、振り分けをしています。 >「値」の定義?(等しい、間、以上、以下等)ってすべて数式で表せますよね? 一応、すべて当たってみたつもりですが、なにぶんにも夕飯前でしたので、万が一にも、おかしいようでしたら、 FormatCndOperand 関数の myOperand の中の配列の中にある文字列の等号式がおかしいことになります。

merlionXX
質問者

お礼

何度もありがとうございました。 > #9 のコードは、「数式が」でも、「セルの値が」でも、両方使えるはずだと思って作っております。 はい、完璧でした。 いつもありがとうございます。 これからもよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (12)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

#1の補足をしておきます。 #1 の回答のとおり、VBA で条件付書式のセル書式を取得することは できません。 したがって、条件付書式で表示上セルの文字色が変わったとしても MsgBox Target.Font.ColorIndex で得られる色番号は、あくまで予めそのセルに設定されている色の 番号であり、条件付書式による表示上の色の番号ではありません。 >ColorIndexは、赤の「3」ではなく「-4105」と表示されます。 以上の理由で予めセルの文字に色を設定してなければ、ディフォルト の色番号である xlColorIndexAutomatic = -4105 が返ります。

merlionXX
質問者

お礼

さっそくありがとうございました。 色の取得が不可能でも、条件付書式が「発動」したかどうかの判定も無理なのでしょうか? それも無理ならあきらめますが。

全文を見る
すると、全ての回答が全文表示されます。
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

つれない回答で申し訳ないのですが、、 質問1. 条件付書式によるセル書式を取得することはできません。 質問2. xlColorIndexAutomatic = -4105 です。 ColorIndex の定数でセルの色の設定における[自動]にあたります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル 条件付書式の結果がすぐに反映されない

    仮にセルA1に、次のような条件付書式を入力します。 数式が =A2<>"" のときにセルの色を赤にする。 そしてセルA2になにか値を入力しても、セルの色がかわりません(セルA1とセルA2の境界が赤になるときもある)。 条件付書式の入力が間違っているのかと思っていたら、 ・スクロールしてセルA1とセルA2を画面上から見えなくした後、再度表示させる。 ・印刷プレビューで確認し、再度表示させる と、条件付書式が反映され、セルの色が指定どおり赤にかわっています。 WinNT Execel97 と WinNT Execel2000 両方で試してみましたが、結果は同じでした。 この現象を回避し、入力後、即条件付書式の結果が反映される方法はないのでしょうか? どなたかよろしくお願いします。

  • Excel VBA 条件付書式の条件満たすセル取得

    Excel2010のVBAで条件付書式の条件を満たすセルの番地を取得したい 具体的には、 Excel2010のあるシートのあるセル範囲(例えばA1~XFD1048576)に 条件付き書式が付けてあって、 (例えば、数式の条件が満たされたら背景色を赤色にするなど) この条件を満たすセルに指定した書式が付けられて表示されています。 この状態で、VBAで、この条件を満たしたセルの番地を、 順番に取得したいのですが、どのように記述すればよいでしょうか。 【追記】 数式をすべてのセルに入れて検出する方法や セルをひとつずつ数式に当てはめてみていく方法は、 セルが膨大なため容量的・時間的にNGです。 このため、条件付き書式で回避しています。 条件付き書式の判定結果である書式(この場合でしたら背景色が赤色) で判断する必要があります。(書式は背景色が赤色でなくてもいいです) よく分かりませんが、検索の中の書式で指定しても、 この条件付き書式の判定結果の書式はヒットしませんでした。

  • Excelの条件付き書式について

    Excelの条件付書式について教えてください。 次のようなことをしたいです。 (1)10個のセルに次のような条件付書式を設定します。  ・条件1:セルの値が5以上だったらセルの塗りつぶし(パターン)を青色にする。  ・条件2:セルの値が5未満だったらセルの塗りつぶし(パターン)を赤色にする。 (2)別の1つのセルで上の10個のセルを監視して  すべてのセルが青色だったら"PASS"と表示する。  ひとつでも赤色のセルがあったら"FAIL"と表示する。 VBAを使用して、条件付書式が設定されたセルを参照し、 どちらの条件付書式が適用されているのか調べられるのなら、 それでもかまいません。 条件付書式でセルの色(パターン)を設定した場合、 セルの.Interior.ColorIndex 及び PatternColorを参照しても、 塗りつぶしはされてないという扱いになっているようです。 なにか方法があるでしょうか?

  • エクセルの条件付書式について

    A1に「路外 125」、B1に「=RIGHT(A1,3)」の関数が入っていて 現在、B1は「125」と表示されています。 B1の条件付書式は50以上~99までは青表示、第二条件は100以上の時は赤表示と 条件付書式を入れていますがうまくゆきません。 セルに関数が入っている時は条件付書式が使えないのでしょうか? 宜しくお願いします。

  • Excel 条件付書式で背景色を変えたい

    Excel2000を使っています。 A2~K2の背景を B2~E2のどこか1つ以上のセルに値が入っていれば青、 F2~I2のどこか1つ以上のセルに値が入っていれば赤 にしたいです。(B2~E2とF2~I2の両方に値が入っていることはありません) どのようにすればできるのでしょうか。 ちなみに私は、 条件付書式でA2~K2を選択し <条件1> 数式が COUNT(B2:E2)>=1 を青 <条件2> 数式が COUNT(F2:I2)>=1 を赤 とやったのですが真っ白いままでした。 よろしくお願いします。

  • エクセルの条件付書式について教えて下さい。

    エクセルの条件付書式について教えて下さい。 作業予定時間と実績時間の差異を視覚的に把握したく、予定時間-実績時間=予定時間オーバーであれば表示文字を赤色等にしたいのですが、どなたかご教授頂けますようお願いします。 現在出来ているのは以下の通りとなります。 A1セル=予定時間(120 ※分単位で入力、セルの書式は標準)、B1セル=作業開始時間(9:00)、C1セル=作業終了時間(12:00)、D1セル=C1-B1(180、セルの書式は[mm])である場合、予定(A1)120分に対して実績(D4)が180分なので60分オーバーとなりますが、この時D1セルの文字を赤色にしたいです。 D1セルには条件付書式で「セルの値が」「次の値より大きい」「=C1」として書式ボタンの書式-フォントタブで色を設定してもD1に反映してくれません。 ※A1が0若しくは空白ならD1の条件付書式がきちんと反映してくれます。 とても困っていますので、どなたか助けて下さいますようお願い致します。。。。。。。。

  • エクセル 条件付書式にて

    エクセルの条件付書式について質問です。 A1セル、セルの書式設定で表示形式をyyyy/m/d(aaa)に設定しています。 A1に11/17と入力すると 2012/11/17(土) と表示されますよね。 土曜日のときにフォントを青にしたく条件付書式を設定したいのですがどのようにしたらよいでしょうか。 無理だと思いつつも =COUNTIF(A1,"*土*") でやってみましたがやはり反映されませんでした。 何か方法ありましたらご教授下さい。 よろしくお願いします。

  • エクセル2003の条件付書式

    エクセル2003でシート全体のフォントを赤に設定してます。 1行目を選択状態にして条件付書式を次のように設定してます。 ・条件1  数式が =$A1<>"" のときフォントを黒(普段は空白です) ・条件2  数式が =$A2="済" のときフォントを黒(リストから済と未を選択します) ・条件3  数式が =$A3="済" のときフォントを黒(リストから済と未を選択します) 上記設定だと、条件1.2.3のいずれか一つでも該当するだけで 1行目のフォントが黒になりますが、条件全てを満たさないと フォントが黒にならないように設定するには、どうすればいいのでしょうか? 回答よろしくお願い致します。

  • Excelの条件付書式の色の付け方について

    Excelの条件付書式を使用して色を付けたいです。 特定のセルの値がマイナスの場合で、マイナス数値が入っている行のセルに値が入っていた場合、色を付ける条件式を作りたいです。 例 A列    B列   C列   ・・・・・  IV1 -1           10             ↑           ココに色を付ける 1つのセルのみの条件式だと 数式が =AND($A$1<0,$C$1<>"") という形で書けたのですが =AND($A$1<0,$C$1<>"")の式だと            ↑       ココの式を1つ1つ変えた条件式をIV列まで書かないとならない為すごく大変です。 数式が =AND($A$1<0,自分自身のセルが空白) というような書き方を教えて頂けないでしょうか?

  • VBA 条件付書式の条件にあっているか

    条件付書式の数式に該当したセルの内容のみ拾ってくるVBAの作成を 試みています。 アンケート用紙は以下のようになっています。 A1 男性     B1 年齢 A2 ///////// A3 A4 /////// A1の性別B1の年齢から判断して条件付書式下記のよう式が入っています。  (A2  =COUNTIF($A$1,"女*")>=1   A3  =COUNTIF($A$1,"男*")>=1   A4  =COUNTIF($A$1,"*男*")>+COUNTIF($B$1,"2*")>=1  ) ただその際にA2/A4は網掛けになっているのですが場合によって前回の 回答を消去せずにアンケート表が作成されていることがあり、網掛け部分の 数値も拾ってきてしまい集計表が正しくなくなってしまいます。 集計表に情報を取ってくる際に、条件付書式がTrueの場合、または書式 が白抜きになっている場合で条件分岐したいので教えてください。 方法としては下記のようになるかと考えています。 ・セルに条件付書式がひとつ以上設定されている。(今回は条件は一つです) ・その条件が、値か式か。(今回は式です) ・式であったら、その式をVBA上で実行してTrueかFalseか判断する  (または書式のタイプを取得する) ですが、書ける知識が乏しくて・・・ よろしくお願いします。

専門家に質問してみよう