こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Select Caseステートメント 「Is」

VBAについて質問です。

http://excelvba.pc-users.net/fol6/6_2.html

Sub test()
Dim intPoint As Integer
intPoint = InputBox("点数を入力してください")

Select Case intPoint
Case Is >= 80
MsgBox "優です。"
Case Is >= 70
MsgBox "良です。"
Case Is >= 60
MsgBox "可です。"
Case Else
MsgBox "再テストです。"
End Select
End Sub
は、
なぜ
Sub test2()
Dim intPoint As Integer
intPoint = 75

Select Case intPoint
Case intPoint >= 80
MsgBox "優です。"
Case intPoint >= 70
MsgBox "良です。"
Case intPoint >= 60
MsgBox "可です。"
Case Else
MsgBox "再テストです。"
End Select
End Sub

では、だめなのでしょうか?

test2を実行すると、
Case Elseの
MsgBox "再テストです。"
になってしまいます。
本当は、"良です。"が正しいのに。

testをF8でステップインしながら実行した時に、
「Case Is >= 80」
の来た時に、isにカーソルをあてても、InputBoxで入力した数値が表示されません。

なぜ、この場合、Case intPoint >= 80
ではダメなのか理由をご教授ください。ご回答よろしくお願いします。

投稿日時 - 2012-09-13 20:54:12

QNo.7696136

暇なときに回答ください

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

Select Case intPoint
Case intPoint >= 80
MsgBox "優です。"
Case intPoint >= 70
MsgBox "良です。"
Case intPoint >= 60
MsgBox "可です。"
Case Else
MsgBox "再テストです。"
End Select

Case intPoint >= 80のような書き方をするときは

Select Case true
Case intPoint >= 80
・・・
End Select
とします。

以上参考まで。

投稿日時 - 2012-09-15 18:34:11

お礼

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

投稿日時 - 2012-10-17 00:15:52

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>なぜ、この場合、Case intPoint >= 80ではダメなのか
 ⇒intPoint >= xxの結果(True、False)との比較になるからです。
  

投稿日時 - 2012-09-14 10:38:52

お礼

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

投稿日時 - 2012-10-17 00:15:51

ANo.1

たとえば、「Case intPoint >= 80」は、
intPointが10の場合、「Case 10 >= 80」→「Case False」→「Case 0」となるので、成立しません。
以下同様に、全て成立しないので、Case Elseに行きます。
intPointが0なら優になります。
(なぜなら「Case 0 >= 80」→「Case False」→「Case 0」→0と0で等値が成立するので。)

詳しくは、VBAのヘルプをどうぞ。

投稿日時 - 2012-09-13 21:34:33

お礼

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

投稿日時 - 2012-10-17 00:15:48

あなたにオススメの質問