前提・実現したいこと
windows10 Excel2013にて、エラーチェック機能のある表を作成しています。
L10:L25及びN10:N25にドロップダウンリストの設定がしてあり、そのドロップダウンリストはOFFSET関数により別シートから参照しています。
O10:O25にはIF関数が入っており、L10:L25及びN10:N25で選択した値によって決まった値を返しますが、IFERROR関数も入っており、IF関数に合致しない値が選択された場合、返す値は0になります。
また、N10:N25には条件付き書式が設定してあり、O10:O25の値が0の場合、赤く塗りつぶすようになっています。
以上を前提条件として、N10:N25が赤く塗りつぶされたとき、エラーのMsgBoxが表示されるようにしたいです。
発生している問題・エラーメッセージ
MsgBoxを表示させるところまではできたのですが、なぜかそのMsgBoxが2回表示されてしまいます。
よくエラーが発生するため、毎度2回表示されてしまうのは非常に煩わしく、1回のみの表示にしたいです。
該当のソースコード
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Intersect(Target, Range("N10:N25"))
If rng Is Nothing Then Exit Sub
Dim c As Range
For Each c In rng.Cells
If c.DisplayFormat.Interior.Color = vbRed Then
MsgBox "該当データが存在しません。"
Exit For
End If
Next
End Sub
試したこと
初心者ながら、エラーの場合、N10:N25のドロップダウンを選択した時点でO10:O25に0が入力され、N10:N25が赤く塗りつぶされてしまうため、「ドロップダウン選択」及び「セルの値確定」の2段処理がなされてしまうのでは?と思い、また別に列を設け、塗りつぶしをそちらに設定したり、IF関数の結果をそちらに飛ばしたりしましたが、やはり原因は他にあるようです。
補足情報(FW/ツールのバージョンなど)
FW等は申し訳ありませんがわかりません。
あまりパソコンに強くないもので、わかりづらいところが多いかと思いますが、何卒、よろしくお願いします。