
【やりたい事】
D1-D3、H1-H3の空白にも、赤色の塗りつぶしがされなようにしたいです
以下コードを実行すると、空白セルにも赤色になってしまいます
Exactの結果の、FALSEだけを赤色にしたいです
ご存じの方、コードやアドバイスのご教授お願いします
【条件】
Exact関数は、C1-C3、G1-G3、K1-K3に既に設定済み
FALSE【間違っている】という文字列に対して赤色に塗りつぶしされる、コードを記述
【コード】
Sub sample()
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
Dim fc As Object
'既存の条件付き書式があれば削除
Range("C1:k" & lastrow).FormatConditions.Delete
'条件を設定して、オブジェクトに格納
Set fc = Range("C1:k" & lastrow).FormatConditions.Add(Type:=xlExpression, Formula1:="=c1=FALSE")
'条件成立で、背景色を「赤色」
fc.Interior.Color = vbRed
End Sub

A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
以下のURLをご覧ください。
https://www.javadrive.jp/excelvba/basic/index17. …
tatsumaru77さんの回答で解決ですが、上記で解説されているとおり、ワークシート上ではTRUEは1、FALSEは0と判断されます。
ご質問者が設定した条件付き書式の数式条件「=c1=FALSE」はc1が絶対参照ではないので、「条件付き書式」の適用範囲とした「C1セル~K列最終行のセル」全てにおいて、「セルの値=FALSE」がチェックされます。
この結果、条件成立セルは「背景色が赤」となる訳ですが、上記URLのとおり、ワークシート上の適用範囲に0があると、0はFALSEと判断されてしまうので、条件が成立してしまいます。
【適用範囲の「C1セル~K列最終行のセル」には0がないので大丈夫】と思ってしまいがちですが、落とし穴があります。それは「未入力による空白」です。
「数式による空白」は長さ0の文字列なので問題ないのですが、「未入力による空白」は注意が必要です。「未入力による空白」は数式の中では「0」と見なされるからです。
このため「セルの値=未入力による空白」は「セルの値=0」となり、結局「セルの値=FALSE」が成立してしまうということになります。
これを避けるには、tatsumaru77さんの回答のように、数式条件を「=EXACT(C1,""FALSE"")」のような厳密な数式にする方法があります。
さらに言えば、上記URLでの解説を踏まえると「=c1=FALSE」の部分を
=C1&""""=""FALSE""・・・①
とする方法でもよいということになります。
①の数式の場合、
ア.セルの値が未入力の空白のときは「&""」によって「""」になるので、「=""="FALSE"」となり不成立
イ.セルの値が0ときは「&""」によって「"0"」になるので、「="0"="FALSE"」となり不成立
ウ.セルの値がFALSEときは「&""」によって「"FALSE"」になるので、「="FALSE"="FALSE"」となり成立
つまり、ウのときのみ「背景色が赤」になるという訳です。
No.2
- 回答日時:
No1です。
Formula1の設定内容ですが、
=c1=FALSE
はC1セルがFALSEの場合、判定結果は真となり赤くなります。
ここでC1セルは、条件付き書式のセル範囲の最初のセルを記入します。
従って、D1セルにもこの内容が適用されます。
D1セルの場合は
=d1=FALSE
で適用されます。
ここで=演算子を使うと、D1セルの内容が空白の場合も、FALSEであると解釈してしまうようです。
従って、判定結果が真となり、赤くなります。
これではまずいので、
セルの内容が文字列として"FALSE"となっていた場合にのみ、赤くなるようにします。
=EXACT(C1,""FALSE"")とかくと、
C1の内容が文字列としてFALSEなら、判定結果は真となり、赤くなります。
C1の内容が文字列としてFALSEでないなら、赤くなりません。
No.1
- 回答日時:
Set fc = Range("C1:k" & lastrow).FormatConditions.Add(Type:=xlExpression, Formula1:="=c1=FALSE")
を
Set fc = Range("C1:k" & lastrow).FormatConditions.Add(Type:=xlExpression, Formula1:="=EXACT(C1,""FALSE"")")
に変えてください。
ありがとうございます。治りました。
ただ、赤く塗りつぶすセルを満たす数式は
以下となるのが、なかなか理解できません
C1とFALSEを比較する??みたいな意味に取れてしまいます
ヒント等教えて頂けると幸いです
"=EXACT(C1,""FALSE"")"
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】条件付き書式設定をマクロ化するには? 3 2025/03/13 07:53
- Excel(エクセル) 【マクロ】Formulaプロパティにて、3行全てに、数式を入れるためには? 2 2025/02/23 14:23
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) 【マクロ】上のデータに下のデータを、結合する 3 2025/03/11 12:12
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) ExcelVBAコードについて 5 2023/10/28 16:54
- Excel(エクセル) セルに日付【任意】が入ったら、セルが青色に代える為には 3 2023/10/02 23:30
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
- Visual Basic(VBA) VBAの間違い教えて下さい 5 2024/08/03 21:35
このQ&Aを見た人はこんなQ&Aも見ています
-
名前の間のスペースをそろえる関数はありますか?佐藤 太郎 佐藤 太郎
Excel(エクセル)
-
【マクロ 画像あり】セル範囲の移動について、簡潔で短いマクロがあれば教えて下さい
Excel(エクセル)
-
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
-
4
【マクロ】Formulaプロパティにて、3行全てに、数式を入れるためには?
Excel(エクセル)
-
5
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
6
エクセル 月間シフト表で曜日ごとの休み数をカウントしたい
Excel(エクセル)
-
7
エクセルで教えてください。 例えばSUM関数でA1+B1の値をC1に出すとします。 C1数式で=SU
Excel(エクセル)
-
8
【マクロ】条件付き書式設定をマクロ化するには?
Excel(エクセル)
-
9
至急お願いします!エクセルのフィルターについて
Excel(エクセル)
-
10
【マクロ、画像あり】A表かB表かどちらか判断をして、処理をする
Excel(エクセル)
-
11
Excel 複数のセルが一致するときに網掛けをする式は作れますか
Excel(エクセル)
-
12
UNIQUE関数、配列数式を使わずに品名ごとの集計を求めたい
Excel(エクセル)
-
13
Excel いい方法教えてください。
Excel(エクセル)
-
14
関数を教えて下さい
Excel(エクセル)
-
15
Excelの数式について教えてください。
Excel(エクセル)
-
16
別のシートの指定列の最終行を返す関数の式を教えて下さい。
Excel(エクセル)
-
17
Excel関数の解決方法
Excel(エクセル)
-
18
エクセルの設定、下へスクロールすると表のヘッダ項目がシートの列番号の部分に表示される
Excel(エクセル)
-
19
ExcelのIF関数との組み合わせの相談
Excel(エクセル)
-
20
VBA_日時のソート
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセル
-
エクセルのdatedif関数を使って...
-
【マクロ】アクティブセルの時...
-
【関数】同じ関数なのに、エラ...
-
エクセルの循環参照、?
-
【マクロ】WEBシステムから保存...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】3行に上から下に並...
-
【マクロ】A列にある、日付(本...
-
【条件付き書式】シートの中で...
-
【マクロ】EXCELで読込したCSV...
-
【エクセル】期限アラートについて
-
【マクロ】列を折りたたみ非表...
-
Excelファイルを開くと私だけVA...
-
Excelの新しい空白のブックを開...
-
マクロ・VBAで、当該ファイルの...
-
派遣会社とかハローワークとか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報