新規会員登録における電話番号登録必須化のお知らせ

以下のコードは以前にこちらのサイトで教えていただいたものです。

J列とK列の同じ行を比較して等しくなかったらK列のセルが赤くなります。
問題なく使えていたのですが、J列が0(ゼロ)でK列が空白の場合は色の変化がしないことがわかりました。。
K列が空白の場合は強制的に赤になるようにコードを変えたいです。 

お詳しい方宜しくお願いいたします。

Sub 比較()

Dim i As Long
For i = 2 To Cells(Rows.Count, "J").End(xlUp).Row
If Cells(i, "J").Value <> Cells(i, "K").Value Then Cells(i, "K").Interior.Color = vbRed
Next i
End Sub

教えて!goo グレード

A 回答 (4件)

Sub 比較()


Dim i As Long
Range("K2", "K" & Cells(Rows.Count, "J").End(xlUp).Row).Interior.Color = vbRed
For i = 2 To Cells(Rows.Count, "J").End(xlUp).Row
If Cells(i, "K").Value <> "" Then
If Cells(i, "J").Value = Cells(i, "K").Value Then Cells(i, "K").interiro.cplor = xlNone
End If
Next i
End Sub
    • good
    • 1
この回答へのお礼

一番しっくりきました!
ありがとうございます!

お礼日時:2022/07/21 12:48

こんばんは


既に的確と思われる回答がありますが・・・本当に
>K列が空白の場合は強制的に赤に
で良いのでしょか?・・ 初めの定義と異なるので少し気になりました
そういう意味では#3様のロジックが理にかなっているかと・・・

単純に日付や書式を比較していないのなら
.Value を .Text と変えれば良さそうにも思います。。が 
叱られるかも知れませんね。。
    • good
    • 1
この回答へのお礼

勉強になります、ありがとうございます。

お礼日時:2022/07/21 12:49

ちょっと付け足しましたがこんなんで良いのではないでしょうか



Sub 比較()
Dim i As Long
Range(Cells(2, "K"), Cells(Rows.Count, "K")).Interior.Color = xlNone
For i = 2 To Cells(Rows.Count, "J").End(xlUp).Row
If Cells(i, "J").Value <> Cells(i, "K").Value Or Cells(i, "K").Value = "" Then Cells(i, "K").Interior.Color = vbRed
Next i
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2022/07/21 12:48

Next iの前に以下を追加する。



If Cells(i, "K").Value="" then
Cells(i, "K").Interior.Color = vbRed
endif
    • good
    • 0

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

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

教えて!goo グレード

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

人気Q&Aランキング