| 
    
     |  | ▼ToShiYo さん: こんにちは
 
 何故か、Good Timingで書き込み見てしまいます。
 
 >実はFor〜NextのNestについてのレベルの質問をしたつもりでした。
 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 >http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=42601;id=excel
 >の回答に今気がついたのですが、このような内容の質問をしたつもりでした。
 とは思っていました。^ ^;
 ですが、対症療法は簡単(極端な話、代わりに書いてあげればいいだけ。
 丸投げには私はResをつけません。)ですが、自分である程度のコードを
 書くスキルがある為、原因は頭が整理出来てないと思いました。
 それで私の初回のResになったわけです。
 
 ネストの話ですが、一般的な話になりますが、ネストが深くなればなるほど
 ・・・(良くない表現)なコードと言われているようです。
 どこで読んだか忘れましたが、7ネストを超えればハッキリ駄目といわれても
 仕方がないそうな?
 勿論必要な場合は必要ですが、深まるに従って、私は頭の中がこんがらかります。
 
 私のソースを見ればわかると思いますが、今回は必要ありません。
 
 Sub 割引率2()
 についてですが、とりあえず、「変数の宣言を強制する」がONなら
 新規にモジュールを作成すればモジュールの最上部に「Option Explicit」
 が宣言されます。この状態ではコンパイルは出来ません。
 
 ソースそのものについては、まだネストの練習プログラムだから・・・
 なんともいえません。ただ好みでいえばSelectionは使用しない方が
 今後の身の為です。
 
 
 >せっかく頂戴しましたコードですが入力した結果が0%になってしまいます。
 >修正がいただけるようであれば幸いです。
 大変失礼しました。手抜き検証でしたので、
 ロジック抜けや間違いがあったようです。
 
 ////////////Sub GetWaribiki() の以下を差し替えてください。
 ///////////これは記述ミスの修正
 '  3-1会員か、一般化を文字列化
 If blnkaiin = True Then
 sBuf = "会員"
 Else
 sBuf = "一般"
 End If
 '3-2 該当する基準額の行で、一般、会員を探し、割引率を取得する
 Waribiki = SearchKingaku(Worksheets("Sheet1"), kingaku, blnkaiin)
 MsgBox kingaku & "円以上の割引率は" & vbCrLf & sBuf & "割引で" & vbCrLf & _
 Waribiki * 100 & "%" & vbCrLf & " です。"
 
 
 /////////Function Gaku を以下に差し替えてください。
 /////////これはロジックミスの修正
 Private Function Gaku(pKingaku As Long) As Long
 '2.検索する額を元に基準額を探す
 Select Case pKingaku
 Case Is >= 50000
 Gaku = 50000
 Case Is >= 20000
 Gaku = 20000
 Case Is >= 10000
 Gaku = 10000
 Case Else
 Gaku = pKingaku
 End Select
 End Function
 
 上記の差し替えで全ての金額、例えば15000とか、42000とかに対応しました。
 間違えておいていうのもなんですが、機能分割していれば修正も簡単でしょ?
 ネストの中に入っていればややこしいですよ。
 
 |  |