タイトル : 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 が実行時エラーになりうる点にも注意) |