Excel VBA質問箱 IV

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

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


26511 / 76738 ←次へ | 前へ→

【55558】Re:select caseの空文字と0について(訂正)
発言  kanabun  - 08/5/11(日) 10:17 -

引用なし
パスワード
   ▼VBA超超初心者さる さん:
> Dim a As Variant
> a = ""
> MsgBox a >= 1

なぜ a >= 1 が True なのか分かりませんが、
もともと↑のような異なるデータ型での比較演算はしません。

なぜ、
>>    Case ""
>>      Range("c1") = "なにも入力されてません"
>の判定を、一番最初にもって行ったら、どうでしょ
と提案したかというと、

もともとInputBox関数からの戻り値は ヘルプにあるように、
文字列型 (String) の値だからです。
あなたが InputBox関数で 1 とか入力しても、
戻り値は 1(数値) ではなく 文字列の "1" なのです。
ですから、
-------------------------
 Dim a As String '変数a のデータ型を String型で宣言する
 a = ""
 MsgBox a >= 1
-------------------------
を実行すれば、a >= 1 のところで「型が一致しません」と叱られる
でしょう?
そういうわけで、
InputBoxの戻り値により条件分岐しようとするばあいには
(1)●まず、何らかの入力があったか? をチェックします。
(2)入力された文字列が「数値に変換可能か」を調べるのは
 その次となります。
(3) IsNumeric(戻り値)が真のときだけ 戻り値を数値に変換して
  数値が >=1 か =0 か マイナスか でCase文の分岐をする
ことになります。

なお、
InputBoxのダイアログで[キャンセル]ボタンを押して
入力がCancelされたことを判断するには
If StrPtr(a) = 0& Then Exit Sub
のように、InputBox実行直後に判断します。
(StrPtr という関数は文字列変数のメモリ上のアドレス
 を返す関数で、StrPtr(a) の戻り値がゼロということは
 アドレスがない、変数a がメモリのどこにも格納されて
 いないことを意味します)
2 hits

【55549】select caseの空文字と0について VBA超超初心者さる 08/5/10(土) 23:13 質問
【55550】select caseの空文字と0について(訂正) VBA超超初心者さる 08/5/10(土) 23:20 質問
【55553】Re:select caseの空文字と0について(訂正) ひげくま 08/5/10(土) 23:30 発言
【55554】Re:select caseの空文字と0について(訂正) kanabun 08/5/10(土) 23:50 発言
【55555】Re:select caseの空文字と0について(訂正) VBA超超初心者さる 08/5/11(日) 0:16 質問
【55556】Re:select caseの空文字と0について(訂正) kanabun 08/5/11(日) 0:25 発言
【55557】Re:select caseの空文字と0について(訂正) VBA超超初心者さる 08/5/11(日) 1:09 質問
【55558】Re:select caseの空文字と0について(訂正) kanabun 08/5/11(日) 10:17 発言
【55559】Re:select caseの空文字と0について(訂正) VBWASURETA 08/5/11(日) 11:06 発言
【55560】Re:select caseの空文字と0について(訂正) kanabun 08/5/11(日) 11:23 発言
【55562】Re:select caseの空文字と0について(訂正) VBWASURETA 08/5/11(日) 11:50 発言
【55563】Re:select caseの空文字と0について(訂正) VBWASURETA 08/5/11(日) 12:21 発言
【55565】訂正Select Caseにはルールがあるようです VBWASURETA 08/5/11(日) 14:50 発言
【55566】Re:訂正Select Caseにはルールがあるようで... kanabun 08/5/11(日) 16:24 発言
【55567】Re:訂正Select Caseにはルールがあるようで... VBWASURETA 08/5/11(日) 17:02 発言
【55574】Re:訂正Select Caseにはルールがあるようで... VBA超超初心者さる 08/5/11(日) 21:01 お礼

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