tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: Select Caseの疑問
投稿日: 2019/02/08(Fri) 12:12
投稿者魔界の仮面弁士
> VBでは、数字と文字では区別されないと記憶していますから

区別されないというよりは、暗黙の型変換が発生するようになっています。

とはいえ、「数字」と「数値」の違い、「文字」と「文字列」の違いは
きちんと認識されておいたほうが良いでしょう。


たとえば下記の場合において、"え" が「High」、"いいか" が「Mid」に
分岐されることが分かっていると、今回の件の理解を進めやすいと思います。

Select Case Text1.Text
 Case "い" To "いあ"
  MsgBox "Low"
 Case "いい" To "うあ"
  MsgBox "Mid"
 Case "うい" To "えあ"
  MsgBox "High"
End Selct



> 入力が『3』ならメッセージには『Low』と表示されるはずですよね?

提示のケースだと、Text プロパティが String 型ゆえに暗黙の型変換によって
 Case "1" To "10"
 Case "11" To "20"
 Case "21" To "30"
に相当する分岐として扱われます。
数値の比較ではなく、文字列の比較になっていることに注意してください。


そのため "3" では「High」と表示され、"115" なら「Mid」と表示されます。

また、全角 "2" が入力された場合には、
Option Compare Text 時には「Mid」となります。
Option Compare Binary 時には、該当なしです。(Case Else 相当)


もしも「数字」を『数値』として扱いたいのであれば、Select Case に渡す値を
CInt(Text1.Text) なり Val(Text1.Text) なりで数値化してあげる必要があります。
(入力された値によっては、CInt や Val が実行時エラーになりうる点にも注意)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。