プログラミング

プログラミングに関するフォーラムです。VBAは除きます。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
If andの質問です
投稿日時: 17/04/28 16:33:48
投稿者: hisayanxp

自信を持ってかいた記述は以下の通りです。
 
Option Explicit
Dim x
x = InputBox("お小遣いの金額を入力して")
  If x >5000 And x <10000 Then
    MsgBox "嬉しい"
  If x >=10000 Then
    MsgBox "超嬉しい"
  Else
    MsgBox "うーん!!"
  End If
  End If
 
※5000から10000未満は「嬉しい」
 10000以上だったら「超嬉しい」
そうでなければ「うーん!!」
となるようにしたかったのですが、本当に「うーん!!」となってしまいました。
よろしくお願いします。

回答
投稿日時: 17/04/28 17:13:21
投稿者: NMC

単純なミスです。
 
 If x >5000 And x <10000 Then
'*****ここから
    MsgBox "嬉しい"
    If x >=10000 Then
      MsgBox "超嬉しい"
    Else
      MsgBox "うーん!!"
    End If
'*****ここまでは、x >5000 And x <10000 の条件で実行される。
 End If
 
そのため、x=200000やx=1000なら応答なし(MsgBoxの実行なし)
一方、x=8000なら、 x >5000 And x <10000 の条件を満たすので、先ず、"嬉しい"となり、
但し、x >=10000 ではないので、"うーん!!" となります。

回答
投稿日時: 17/04/28 17:13:54
投稿者: i-brown

ElseIfを使いましょう。

Option Explicit

Private Sub Test()
    Dim x
    x = InputBox("お小遣いの金額を入力して")
    
    If x > 5000 And x < 10000 Then
        MsgBox "嬉しい"
    ElseIf x >= 10000 Then
        MsgBox "超嬉しい"
    Else
        MsgBox "うーん!!"
    End If
End Sub

 
流れとしては、最初に5000円以下の"うーん"に分岐させた方が、
「数値の小さい順」になって理解しやすくなると思います。
 
ちょっといじってみます。
Option Explicit

Private Sub Test()
    Dim Kozukai As Currency
    Kozukai = InputBox("お小遣いの金額を入力して")
    
    If Kozukai <= 5000 Then
        MsgBox "うーん!!", vbCritical, "値上げしてよ!"
    ElseIf Kozukai < 10000 Then
        MsgBox "嬉しい", vbExclamation, "うん。"
    Else
        MsgBox "超嬉しい", vbInformation, "やったー!"
    End If
End Sub

変数名の変更
金額をVariant型からCurrency型に変更(Longでも良いのですが、お金に関することなので。)
適当にアイコンやタイトルを追加。
 
いろいろ作っているうちにできることが増えますので頑張ってください。

回答
投稿日時: 17/04/28 17:23:43
投稿者: i-brown

このサイトの「やってみよう!Excel VBAで業務改善!」をシーズン1から読むと、Q&Aに質問しなくても系統立てて学べると思います。
 
http://vbae.odyssey-com.co.jp/column/

投稿日時: 17/04/29 06:46:10
投稿者: hisayanxp

NMCさん、i-brownさん
 
ありがとうございました。
実際にやってみて良くわかりました。
HPを見てみたらすごく勉強になりました。