|
▼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
>となりますが、それでよいのですよね??
|
|