- ベストアンサー
【Excel VBA】セルが塗りつぶされているものを探す方法を教えてください!
VBA初心者です。 お分かりになる方がいらっしゃったら、教えてください。 プロシージャを書いていただけると本当にありがたいです! 次のようなデータがあって、セルが赤く塗りつぶされているものがあれば、「データが間違っています」、なければ「OKです!」とメッセージボックスを表示したいのですが、どのようにすればよいかわかりません。 A B C D 1 No.1 完了(赤) りんご 2 No.2 受付 みかん 3 No.3 完了 みかん ○ ちなみに、B1のセルを塗りつぶすのは、 その前に、B列が"完了"でD列が""空白のものを検索し、赤く塗りつぶす構文を入れています。 Dim myData as integer myData=Range("B1000").End(xlUp).Row For i = myData To 2 Step -1 If Cells(i, 2).Value = "完了" And Cells(i, 4).Value = "" Then Cells(i, 2).Interior.Color = vbRed End If Next i この後にメッセージボックスが出るようにしたいです! よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
簡単なサンプル。。。 '--------------------------------------------- Sub test() Dim i As Long Dim ErrCnt As Long Dim myData As Integer myData = Range("B1000").End(xlUp).Row For i = myData To 2 Step -1 If Cells(i, 2).Value = "完了" And Cells(i, 4).Value = "" Then Cells(i, 2).Interior.ColorIndex = 3 ErrCnt = ErrCnt + 1 Else Cells(i, 2).Interior.ColorIndex = xlNone End If Next i If ErrCnt = 0 Then MsgBox "OKです!" Else MsgBox ErrCnt & " 件のエラーがあります" End If End Sub '---------------------------------------
その他の回答 (1)
- okormazd
- ベストアンサー率50% (1224/2412)
やりたいことが何の意味があるのかよくわからないが、 下記で目的は達成するように思うが、こんなこととは違うんだろうね。 Dim myData as integer myData=Range("B1000").End(xlUp).Row For i = myData To 2 Step -1 If Cells(i, 2).Value = "完了" And Cells(i, 4).Value = "" Then Cells(i, 2).Interior.Color = vbRed MsgBox "データが間違っています" End If Next i
お礼
ありがとうございます! こんな感じでOKなんですけど、それがなかったときに、「OKです」と表示される方法がわからなくて。。。 else MsgBox"OKです!" としてしまうと、1行1行でメッセージが表示されてしまうから、 赤のセルのところを探すのに、findformatかなぁと思ったりしたんですが。 お時間があれば、よろしくお願いいたします!
お礼
ありがとうございます!! 無事設定することができました! 件数まで出るようにしていただいて、本当にありがたいです! また何かありましたら、どうぞよろしくお願いいたします!!