Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13161 / 76734 ←次へ | 前へ→

【69081】Re:range設定ミス?
質問  みその  - 11/5/14(土) 17:45 -

引用なし
パスワード
   ▼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
>となりますが、それでよいのですよね??
1 hits

【69069】range設定ミス? みその 11/5/14(土) 4:40 質問
【69070】Re:range設定ミス? かみちゃん 11/5/14(土) 7:27 発言
【69076】Re:range設定ミス? みその 11/5/14(土) 15:15 質問
【69072】Re:range設定ミス? ichinose 11/5/14(土) 9:59 発言
【69077】Re:range設定ミス? みその 11/5/14(土) 15:20 質問
【69079】Re:range設定ミス? ponpon 11/5/14(土) 16:38 発言
【69081】Re:range設定ミス? みその 11/5/14(土) 17:45 質問
【69082】Re:range設定ミス? かみちゃん 11/5/14(土) 17:58 発言
【69085】Re:range設定ミス? ponpon 11/5/14(土) 18:28 発言
【69090】Re:range設定ミス? みその 11/5/14(土) 20:04 お礼

13161 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free