電子書籍の厳選無料作品が豊富!

【やりたい事】
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

「【マクロ 画像あり】Exact関数の結果」の質問画像
  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (2件)

No1です。


Formula1の設定内容ですが、
=c1=FALSE
はC1セルがFALSEの場合、判定結果は真となり赤くなります。

ここでC1セルは、条件付き書式のセル範囲の最初のセルを記入します。
従って、D1セルにもこの内容が適用されます。
D1セルの場合は
=d1=FALSE
で適用されます。
ここで=演算子を使うと、D1セルの内容が空白の場合も、FALSEであると解釈してしまうようです。
従って、判定結果が真となり、赤くなります。

これではまずいので、
セルの内容が文字列として"FALSE"となっていた場合にのみ、赤くなるようにします。

=EXACT(C1,""FALSE"")とかくと、
C1の内容が文字列としてFALSEなら、判定結果は真となり、赤くなります。
C1の内容が文字列としてFALSEでないなら、赤くなりません。
    • good
    • 0

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"")")

に変えてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。治りました。
ただ、赤く塗りつぶすセルを満たす数式は
以下となるのが、なかなか理解できません

C1とFALSEを比較する??みたいな意味に取れてしまいます
ヒント等教えて頂けると幸いです

"=EXACT(C1,""FALSE"")"

お礼日時:2025/03/16 01:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報