| 
    
     |  | ▼ponpon さん: 
 検証していただいてありがとうございました。
 
 私もいただいたコードで実際にやってみました。
 
 ponpon さんのおかげで気づきました。
 一つずつセルを見て行って、一つがOKなら
 まずその段階で処理1を実行していくのですね・・。
 私が行き詰っていた点も、まさにここにありました。
 
 実は、やりたいことは、少し違っていまして、
 すべてのセルに入力漏れがなくなって初めて、
 処理1を実行させたいのです。
 逆にいうと、1つでも、入力漏れがあれば、
 処理1は実行したくないのです。
 
 今まで、どこかに入力漏れがあるのに、
 なぜ処理1が実行されてしまうんだろう・・・と思っていたのは、
 順にセルを見て行って、条件を満たすセルがあった時点で、
 処理1が実行されてしまっていたんですね・・。
 
 どのセルにもデータが存在しない(警告文が表示されない)ときに初めて
 処理1を実行させたい場合は・・どのようなコードになるのでしょうか。
 
 if("A8:A13" "A32:A37")のうち
 一つでもデータが存在する場合は
 番号入力しなさいというMsgBoxを表示させたいのです。
 
 全部のセルのデータ消えて初めて、処理1を実行する。
 そういうことがしたいのですが・・・
 
 一つずつ見て行って、実行してしまうFor next i の構文を使うことが
 根本的に間違いなのでしょうか。。。
 
 どうかアドバイスお願いいたします。
 
 
 >時間があったので、やってみました。
 >
 >
 >Sub 入力漏れチェック()
 >
 >Dim i As Range
 >
 >'Worksheets("A").Range("A8:A13", "A32:A37").Select
 >Worksheets("A").Range("A8:A13,A32:A37").Select
 >
 >'For Each i In Worksheets("A").Range("A8:A13", "A32:A37")
 >For Each i In Worksheets("A").Range("A8:A13,A32:A37")
 >  If i.Value <> "" Then
 >   MsgBox "番号を入力してください"
 >    Exit Sub
 >   Else
 >     MsgBox "A"
 >  End If
 > Next i
 >End Sub
 >
 >どちらの場合もうまくいきましたよ。
 >
 >For Each の場合順番にセルを見ていくので
 >データがない場合、処理1が実行され、データがあった場合に
 >初めて
 >MsgBox "番号を入力してください"が実行され
 >Exit Sub
 >となりますが、それでよいのですよね??
 
 |  |