VBAで条件付き書式を設定する際に空欄のセルは適用除外したい

このQ&Aのポイント
  • Excel2002又は2003のVBAにおいて条件付き書式をマクロを組んで設定している際、空欄(未入力状態のセル)も条件に合致してしまいます。この現象を回避する方法はあるのでしょうか?
  • マクロで条件付き書式を設定しているため、条件付き書式の設定を行うエクセル上の操作ではなく、マクロで選択したセルに書式の設定を行いたいです。
  • 空欄になっているセルに半角スペースなどを入れることで色が付かなくなることを確認していますが、さらに条件を追加するなどしてこの現象を回避する方法はありますか?
回答を見る
  • ベストアンサー

VBA 条件付き書式で空欄は適用除外したい

Excel2002又は2003のVBAにおいて条件付き書式をマクロを組んで設定しているのですが、 設定1:5以下の場合、青 設定2:-10以下の場合、赤 のように設定したのですが、空欄(未入力状態のセル)も青くなってしまいます。 空欄になっているセルに半角スペース等を入れれば色は付かなくなることを確認はしたのですが、条件付書式にさらに条件を追加する等で、この現象を回避する方法はないでしょうか? なお、マクロで条件付書式の設定してあるセルを選択し、条件付書式を一括で書き換えています(色の設定や範囲指定を別設定で変えられるように)。 そのため、条件付き書式でエクセル上の操作で行う設定ではなくマクロで選択したセルに書式の設定を行うようにしたいのですが・・・ ※書き込むカテゴリに少し迷ったのですが、こちらで質問させていただきます。 よろしくお願いします。

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

  • ベストアンサー
  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.2

NO1です ここは素直に第3の条件を入れましょう。 -10以下、0、5より小さいの順で分けます。条件3(FormatConditions(3))にxlNoneを入れると勝手に3つ条件が2つに変更されるようです。ですので1番目か2番目に入れます。 With Cells .FormatConditions.Delete .FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, Formula1:="-10" .FormatConditions(1).Interior.ColorIndex = 3 .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0" .FormatConditions(2).Interior.Pattern = xlNone .FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="5" .FormatConditions(3).Interior.ColorIndex = 5 End With >Range(Cells(1, 1), Cells(65535, 255)).SpecialCells(xlCellTypeAllFormatConditions).Select ですと、更のシート(条件を設定していない)ではエラーになると思います。 はじめは不用意にIFでと述べましたが、考えてみるとこちらの方が早いとおもいます。失礼しました。

doradora55
質問者

お礼

別件でものすごく忙しくなり、この件は手放してしまうことになりそうですが、条件付き書式が一件もない場合エラーになる等、とても参考になりました。ありがとうございました。

doradora55
質問者

補足

回答、ありがとうございます サラのシートの場合を全く考えてなかったのには気づきませんでした。ありがとうございます! マクロの記録から作るとこういうポカをよくやってしまう・・・ まだ組み込んで確認をしてませんので、締め切りませんがほんとに助かりました。のちのち謎のエラーで苦しめられるところだった(--;

その他の回答 (1)

  • Ce_faci
  • ベストアンサー率36% (46/127)
回答No.1

おはようございます IF 値>-10 AND 値<=5 AND 値<>0 THEN  青 IF 値<=-10 THEN  赤 ではないでしょうか。

doradora55
質問者

補足

朝早くから回答ありがとうございます! 回答いただいた方法だと0が青くならないのかな?と。  なお質問に入れ忘れていましたマクロのソースを補足として追加します。SpecialCellsで条件付書式を選択肢、条件を再設定しています。  また、セルの値を比較する場合の自セル値の参照(自セルの相対参照を設定する必要がある?)の設定の仕方がよくわからないのですが、SpecialCellsを使っているとうまく設定できなかったりするんでしょうか? ' 条件付書式の設定されているセルを選択 Range(Cells(1, 1), Cells(65535, 255)).SpecialCells(xlCellTypeAllFormatConditions).Select ' 条件付書式を削除 Selection.FormatConditions.Delete ' 5未満 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:=5(実際は変数名) 'セル背景色 Selection.FormatConditions(1).Interior.ColorIndex = 青(実際は変数名) ' -10以下 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, Formula1:=-10(実際は変数名) 'セル背景色 Selection.FormatConditions(2).Interior.ColorIndex = 赤(実際は変数名) ※なお、質問しておいて申し訳ないのですが、もうすぐ出かけるので補足等を求められた場合、返事が遅れるかもしれません。ご容赦ください

関連するQ&A

  • Excelの条件付書式の表示

    Excel2000です。 Excelの条件付書式では、条件によってセルを色で塗りつぶしたり、(私はあまり使わないですが、フォントや罫線なども)設定できます。 しかし、セルが色で塗りつぶされていた場合に、 ・条件付書式で色が着いているのか、 ・(条件なく)「セルの書式設定」-「パターン」で色が設定されているのか これらのどちらなのかわからない ということになりますよね。 もちろん、色で塗りつぶされたセルを選択して 書式-条件付き書式 を選べば、もし条件付書式が設定されていれば、その条件が表示されるはずです。 しかし、いちいちそうしなくても、どのセルに【どんな】条件付書式が設定されているかすぐ知る方法をお教えください。 最低でも、条件付書式が設定されているセルをパッとすぐ知る方法をお教えください。

  • EXCEL2003 条件付書式が狂ってくる

    条件付書式は、見ためにどのセルに入っているのかわからないというのと、複数の条件付書式が入ると、なぜかその前に決めていた条件付書式が消えてしまっているということがあって、なかなか不便に思っています。(やりかたが悪いのかもと思うのですが) それで、VBAの entireculumn というのを見つけたのですが、 これで対応できるでしょうか? やりたい事は、 1 2*--------------------------- 3*--------------------------- 4 5 6*--------------------------- 7*--------------------------- 上記のように、「*」をつけた行にだけ、行全体に色をつけておく、 というのを条件付書式で、 「数式が」「=$A1="*"」 としたもので、その設定をしているシートに、横にずっと、いろんな関数を入れていってます。 ですが、関数を入れたり、そのプロセスで列挿入などすると、 色がずれてしまうのです。 その回避策として、VBAで最初に色の設定をしておけないでしょうか? 「*がある行だけに色をつける。」 よろしくお願いします。

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

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

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

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

  • [Excel]条件書式

    Excel2003です。 基本的なことなのかもしれないのですが、他のセルを条件とする条件付書式の設定方法を教えてください。 例えば、 「A1」が100以上なら「A2」のセルの色をグレーにするといった具合です。 条件のセルと、書式をかけるセルが同じなら使い方は分かるのですが、これらのセルが別々になると使い方がよくわかりません。

  • 条件付き書式でできますか?

    エクセル2007ユーザーです。セルにコピーした半角数字を貼り付けるのですが、その数字が10桁と9桁の場合があります。9桁の数字のみ、条件付き書式でセルの色と文字をマーキングすることは可能でしょうか。 入力規則ですと、貼り付けた場合、規則は無効となってしまいます。 マクロやVBAを使わないでできれば、関数で行うことは可能でしょうか。 ご教示よろしくお願いします。

  • 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か判断する  (または書式のタイプを取得する) ですが、書ける知識が乏しくて・・・ よろしくお願いします。

  • 条件付き書式で空欄に色をつけ文字が入ったら色を消す

    Excelの条件付き書式で複数セル(A2)と(C2)の条件を満たした場合、セル(B2)に色をつけ、入力漏れ防止をするよう塗りつぶしを設定しています。(B2)は空欄です。セル(B2)に文字が入力されたら、塗りつぶした色を、塗りつぶし無しにすることは出来ますでしょうか。 (B2)セルに以下の条件付き書式をしています。 (A2)に何か文字があり、(C2)に県の文字があれば(B2)を塗りつぶす。 =AND(COUNTIF($C2,"✴︎県✴︎"),$A2〈〉"") ここまでは、設定済みなのですが、(B2)に文字が入力されたら、塗りつぶしを無しにしたいのです。 お知恵をお貸しください。

  • excelの条件付書式がうまく設定できない

    excel2013で条件付書式を設定しようとしているのですが、うまく設定できません。 Q55に”aaa"と入力 R55に"aac"と入力してR55のセルにQ55と違うとセルに色を付けたいと思い以下の様に設定したのですがうまく動作してくれません。原因がわからないのですがどなたか教えて下さい。設定画面を画像添付しておきます。 R55に ”=<>Q55”→書式と設定

  • 条件付書式のVBA

    条件付書式のVBAについて質問させてください。 A1:A100に「晴れ」「曇り」「雨」「台風」「不明」と入力するとします、するとその行のいくつかセルに色をつけたいです。 たとえば、A1に「晴れ」と入力されたらB1、C1、(D1とばして)E1、F1・・・に色がつく。 できればVBAの式を教えていただけると大変助かります。 どうぞよろしくお願いいたします。

専門家に質問してみよう