重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

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

Exact関数がC1-C3まで入っています
判定が、TRUEかFALSEの場合で
FALSEの場合、条件付き書式の 赤色になる

前述の挙動を、マクロにしたいです
ご存じの方、アドバイスorコードを教えて下さい

【条件】
=EXACT(A1,B1)

【数式】=C1=FALSE
【色】Color = 255
【範囲】C1:C3

A 回答 (3件)

Option Explicit


Sub sample()
Dim lastrow As Long

'最終行は3行目まで
lastrow = 3

'指定範囲にEXCAT関数を記述
Range("C1:C" & lastrow).Formula = "=EXACT(A1,B1)"

Dim fc As Object

'既存の条件付き書式があれば削除
Range("C1:C3").FormatConditions.Delete

'条件を設定して、オブジェクトに格納
Set fc = Range("C1:C3").FormatConditions.Add(Type:=xlExpression, Formula1:="=C1=FALSE")

'条件成立で、背景色を「赤色」
fc.Interior.Color = vbRed
End Sub


上記コードはEXCACT関数をC1~C3に記述するところからスタートするものです。

>Exact関数がC1-C3まで入っています
というご説明なので、上記コードのDim fc As Objectより前の行は、本当は不要です。

つまりDim fc As Object以下のコードで、「数式を使用して~」の条件付き書式を設定し、C1~C3セルにFALSEがあれば「背景色を赤色」にします。
    • good
    • 0
この回答へのお礼

大変、分かりやすいコードありがとうございます
本コードを元に、さらに、新しい質問を同カテゴリーに
しました。お手すきな時がございましたら、アドバイスお願いします

お礼日時:2025/03/15 16:41

該当シートのシートモジュールに以下のマクロを登録してください。


WorksheetFunction.exactはサポートされていないので、=を使用しています。exactは大文字と小文字を区別して比較するためのものです。
マクロでの=は、大文字と小文字を区別して比較するため、exactと同じ結果になります。


Private Sub Worksheet_Change(ByVal Target As Range)
Dim wrow As Long
Dim result As Boolean
If Intersect(Target, Range("A1:B3")) Is Nothing Then Exit Sub
Application.EnableEvents = False
For wrow = 1 To 3
If Cells(wrow, 1).Value = Cells(wrow, 2).Value Then
Cells(wrow, 3).Interior.Pattern = xlNone
Cells(wrow, 3).Value = True
Else
Cells(wrow, 3).Interior.color = 255
Cells(wrow, 3).Value = False
End If
Next
Application.EnableEvents = True
End Sub
    • good
    • 1

Exact関数はWorksheetFunctionで呼び出せます。


https://osiete-excelvba.work/entry/20241009/1728 …
文字色を変更するのはこちら。
https://www.sejuku.net/blog/32403
    • good
    • 1
この回答へのお礼

参考サイトをご教授頂きまして、ありがとうございます

お礼日時:2025/03/15 16:44

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A