Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


39186 / 76738 ←次へ | 前へ→

【42667】Re:For〜Nextを使って
回答  yata  - 06/9/18(月) 21:08 -

引用なし
パスワード
   ▼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関数で数値にしてセルの列番号と行番号に使います。
条件分岐が多くなりましたが、ほかの数字が入った時は再入力させます。

0 hits

【42588】For〜Nextを使って ToShiYo 06/9/15(金) 20:02 質問
【42596】Re:For〜Nextを使って neptune 06/9/15(金) 22:10 発言
【42604】Re:For〜Nextを使って ToShiYo 06/9/16(土) 12:17 お礼
【42615】Re:For〜Nextを使って neptune 06/9/16(土) 15:37 回答
【42635】Re:For〜Nextを使って ToShiYo 06/9/17(日) 9:07 お礼
【42639】Re:For〜Nextを使って neptune 06/9/17(日) 10:30 回答
【42667】Re:For〜Nextを使って yata 06/9/18(月) 21:08 回答
【42757】Re:For〜Nextを使って ToShiYo 06/9/20(水) 19:34 お礼

39186 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free