• ベストアンサー

【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 この後にメッセージボックスが出るようにしたいです! よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.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 '---------------------------------------  

crx85281
質問者

お礼

ありがとうございます!! 無事設定することができました! 件数まで出るようにしていただいて、本当にありがたいです! また何かありましたら、どうぞよろしくお願いいたします!!

その他の回答 (1)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

やりたいことが何の意味があるのかよくわからないが、 下記で目的は達成するように思うが、こんなこととは違うんだろうね。 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

crx85281
質問者

お礼

ありがとうございます! こんな感じでOKなんですけど、それがなかったときに、「OKです」と表示される方法がわからなくて。。。 else MsgBox"OKです!" としてしまうと、1行1行でメッセージが表示されてしまうから、 赤のセルのところを探すのに、findformatかなぁと思ったりしたんですが。 お時間があれば、よろしくお願いいたします!

関連するQ&A