• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Select Caseのisについて)

Select Caseのisについて

このQ&Aのポイント
  • Select Case文におけるisの使い方について疑問があります。
  • 質問のサンプルコードにおいて、Case Is < 3とCase i < 3は同じ意味ではありません。
  • isは変数名ではなく、比較演算子の一部です。

質問者が選んだベストアンサー

  • ベストアンサー
  • okgoripon
  • ベストアンサー率44% (1141/2548)
回答No.2

まだ締め切られていないようなので。 >例えばこのようなサンプルの時、 >Case Is < 3 >の時は >Case 2 < 3 >Case i < 3 >と同じ意味ですよね? いいえ、違います。 同じ意味ではありません。 Select Case A Case B   何かの処理 End Select が If A = B then   何かの処理 End If や Select Case A Case Is = B   何かの処理 End Select と等価であることが理解できないと、ずっと理解できないままだと思います。 これはもう「Select Caseはこういう動作をする文なんだ」というレベルの話なんで、まずは命令リファレンスをみて、それを理解することから始めるしか無いですね。 あと、蛇足ながら。 i = 2 Select Case True Case i < 3   Debug.Print "3以下です" Case Else   Debug.Print "3以上です" End Select とすれば、一応は「isを使った場合」と同じ動作をするでしょうね。 Boolean型とSelect Caseの動作をきちんと理解していれば、何故これがそういう動きをするのかも理解できるはず。 本来Boolean型同士の比較は、あまり行儀の良いプログラムではないのですが、まあ、ご愛嬌ということで。

UXZACQEYIHKRU
質問者

お礼

回答ありがとうございました。

その他の回答 (1)

  • okgoripon
  • ベストアンサー率44% (1141/2548)
回答No.1

そもそも、数値の比較が表示されるメッセージと食い違っているんですが。 「< 3」だと「3より小さい」、つまり「3未満」です。 Longは整数なので、実際には「< 3」は「2以下」になります。 あと「変数を使った場合」は明らかにバグってます。 Select Case HOGEHOGE Case FUGAFUGA End Select と書かれていた場合「Case FUGAFUGA」は「HOGEHOGEとFUGAFUGAを比較して等しい」という条件です。 If文で書くなら「If HOGEHOGE = FUGAFUGA Then」ですね。 Select Case i Case i < 3 End Select と書かれていた場合「Case i < 3」は同様に「iとi < 3を比較して等しい」という条件です。 If文で書くなら「If i = (i < 3) Then」ということになりますが、iはLong、(i < 3)はBooleanで型が違うため、比較してもまともな結果にはなりません。

UXZACQEYIHKRU
質問者

お礼

回答ありがとうございました。

関連するQ&A

専門家に質問してみよう