| 
    
     |  | ▼ToShiYo さん: 
 >実はFor〜NextのNestについてのレベルの質問をしたつもりでした。
 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 >http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=42601;id=excel
 >の回答に今気がついたのですが、このような内容の質問をしたつもりでした。
 以下のようなコードで作成しました。
 >
 >Sub 割引率2()
 >Dim a As String
 >For I = 2 To 3
 >  For n = 2 To 4
 >    I = InputBox("一般は2を" & Chr(10) & _
 >           "会員は3を入力してください")
 >    n = InputBox("50000円以上は2" & Chr(10) & _
 >           "20000円以上は3" & Chr(10) & _
 >           "10000円以上は4を入力してください")
 >     If Selection.Column = 2 Then
 >     a = Cells(1, 2).Value
 >    Else
 >     a = Cells(1, 3).Value
 >    End If
 >     MsgBox a & "は" & Selection.Value * 100 & "%割引です"
 >  Next n
 >Next I
 >End Sub
 >
 >せっかく頂戴しましたコードですが入力した結果が0%になってしまいます。
 >修正がいただけるようであれば幸いです。
 0%になるのは何処も選択されていないからです。
 あなたの一番最初のコードでは Cells(n,i).Select でセルを選択していましたが、
 このコードではいきなり
 If Selection.Column=2 Then
 としています。
 それから、For〜Nextの質問とは外れますが、InputBoxの値を変数に使用するのなら、ループする必要が無いのでは?
 またInputBoxの戻り値が数値でなかったら Cells(n,i)とするとエラーになります。
 入力値にほかの数字が入った時のエラー対策も必要かもしれません。
 
 Sub 割引率2()
 Dim a As String
 入力1:
 i = Val(InputBox("一般は2を" & Chr(10) & _
 "会員は3を入力してください"))
 If i <> False Then
 If i = 2 Or i = 3 Then
 
 入力2:
 n = Val(InputBox("50000円以上は2" & Chr(10) & _
 "20000円以上は3" & Chr(10) & _
 "10000円以上は4を入力してください"))
 If n <> False Then
 If n > 1 And n <= 4 Then
 MsgBox Cells(1, i) & "は" & Cells(n, i) * 100 & "%割引です"
 Else: GoTo 入力2
 End If
 End If
 Else: GoTo 入力1
 End If
 End If
 End Sub
 InputBoxの引数のTypeが指定してないのでVal関数で数値にしてセルの列番号と行番号に使います。
 条件分岐が多くなりましたが、ほかの数字が入った時は再入力させます。
 
 |  |