|
▼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とかに対応しました。
間違えておいていうのもなんですが、機能分割していれば修正も簡単でしょ?
ネストの中に入っていればややこしいですよ。
|
|