Excel VBA質問箱 IV

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

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


26503 / 76738 ←次へ | 前へ→

【55566】Re:訂正Select Caseにはルールがあるようです
発言  kanabun  - 08/5/11(日) 16:24 -

引用なし
パスワード
   > とやってみたところ、「"65535以上"」となりました。

何度も申し上げますように、
InputBox関数が返す値のデータ型はString型です。
で、混乱の一端は
InputBox関数の戻り値を Variant型の変数で受け取っていることに
あるような気がします。
Variant型変数は 「InputBoxメソッド」の戻り値のように
時には文字列であったり、時にはFalse(Boolean型)であったり、
場合によっては配列であったりするときには
必要不可欠な変数型なのですが、今回の例のように
自動型キャストが行われて「エラーにならず」
不可解な処理をすることがあります。
(例1) ----------------------------------- 既報
 Dim a As Variant
 a = ""
 MsgBox a >= 1 '【True】となります

(例2) -----------------------------------
 Dim a As Variant
 a = ""
 MsgBox a >= "1" '【False】となります

そうかと思えば、自動型変換して 0 = 0 となりそうな
ものが、そうならないこともあります。
(例3) -----------------------------------
 Dim a As Variant
 a = ""
 MsgBox a = Val(a) '【False】が返る

で、
私からのコメントはすでに申し上げたとおり、
InputBox関数は文字列を返すのだから、受け取る変数を
Dim a As String と文字列型で宣言して、
もし a が "" (vbNullString) だったら
  「入力がありません」
何らかの文字列が返されたら、
  数値化できるかどうか IsNumeric で判断して
  数値化可能だったら
   Select Case Val(a) '▼数値に変換する
     Case >= 1 : MsgBox 「1以上」
     Case 0   : MsgBox 「0 です」
     Case Is < 0: MsgBox 「負値です」
   End Select
と、分岐すればいいと思います。
Dim a As String と文字列型で宣言してあれば、
a が "" のとき、
  a >= 1
を実行すれば、「型が一致しません」とはっきりエラーになるので、
  「どうして "" は1以上なのか?」...と
悩まなくて済みますので (^^
3 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 お礼

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