Excel VBA質問箱 IV

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

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


7017 / 13646 ツリー ←次へ | 前へ→

【41666】金利計算について ToShiYo 06/8/18(金) 20:54 質問[未読]
【41667】Re:金利計算について ぱっせんじゃー 06/8/18(金) 21:02 発言[未読]
【41682】Re:金利計算について ToShiYo 06/8/19(土) 18:38 質問[未読]
【41683】Re:金利計算について かみちゃん 06/8/19(土) 19:00 回答[未読]
【41743】Re:金利計算について ToShiYo 06/8/21(月) 22:14 お礼[未読]

【41666】金利計算について
質問  ToShiYo  - 06/8/18(金) 20:54 -

引用なし
パスワード
   金利負担を計算しております。

このコードでは、Application.Inputboxを
キャンセルした場合→
金利が0になり全て無金利扱いになってしまいます。
金利の数字を入れずにOKを押した場合→
エラーが発生します。
キャンセルないしは数字を入れない場合は、Exitさせ、更に
「金利を入力してください」と表示させる方法を教えてください。

また金利の入力した場合、「その金利で間違い無いですか」を付け加える
方法も別途明示するコードを教えてください。

また、シート1以外に金利計算が出来るようにさせたいのです。
そのためにFor i= 2 To Sheets.Count にしていますがもっと
確実な方法(コード)を表現する方法がありましたら、教えてください。

一度に多くの質問をしましたが、全てでなくても良いですので
アドバイスお願いします。


Sub 台帳の金利変更()

 Dim i As Integer
 Dim Kinri As Single

 Kinri = Application.InputBox("金利を変更します" & Chr(13) & "新金利を入力してください" & Chr(13) & _
 "例:「0.02」入力は…2%を示します ", "金利変更")
 
  For i = 2 To Sheets.Count
   Sheets(i).Range("H3") = Kinri
  Next

End Sub

【41667】Re:金利計算について
発言  ぱっせんじゃー  - 06/8/18(金) 21:02 -

引用なし
パスワード
   kinriの返り値が
0
の場合で条件分岐させては?

【41682】Re:金利計算について
質問  ToShiYo  - 06/8/19(土) 18:38 -

引用なし
パスワード
   ▼ぱっせんじゃー さん:
>kinriの返り値が
>0
>の場合で条件分岐させては?

アドバイスありがとうございます。
セルのどこかを指定しているとしやすいのですが、
InputBoxで数値が0又は””というコードの展開がはうまく行きませんでした・・・
If Kinri=0 Or Kinri="" Then Exit Sub
なども考えたのですが・・・エラーになります。

もう少し返り値のヒントをいただけませんでしょうか。

【41683】Re:金利計算について
回答  かみちゃん E-MAIL  - 06/8/19(土) 19:00 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>このコードでは、Application.Inputboxを
>キャンセルした場合→
>金利が0になり全て無金利扱いになってしまいます。
>金利の数字を入れずにOKを押した場合→
>エラーが発生します。
>キャンセルないしは数字を入れない場合は、Exitさせ、更に
>「金利を入力してください」と表示させる方法を教えてください。
>
>また金利の入力した場合、「その金利で間違い無いですか」を付け加える
>方法も別途明示するコードを教えてください。
>
>また、シート1以外に金利計算が出来るようにさせたいのです。
>そのためにFor i= 2 To Sheets.Count にしていますがもっと
>確実な方法(コード)を表現する方法がありましたら、教えてください。

以下のような感じでいかがでしょうか?
InputBoxメソッドのヘルプを参照していただきたいのですが、戻り値は、引数
Typeを明示的に指定しない限り、文字列となります。
そのため、戻り値用変数を
Dim Kinri As Single
のように宣言していると、キャンセルしたとき、数値以外が入力されたときなど
に「型が一致しません」というエラーになるかと思います。

Sub Kinri_Change()
 '台帳の金利変更
 Dim ws As Worksheet
 Dim strKinri As String


 Do While True
  strKinri = Application.InputBox("金利を変更します" & Chr(13) & "新金利を入力してください" & Chr(13) & _
   "例:「0.02」入力は…2%を示します ", "金利変更")
  If Val(strKinri) = 0 Then
   MsgBox "金利を入力してください"
  Else
   If MsgBox("その金利で間違い無いですか " & strKinri, vbYesNo) = vbYes Then
    Exit Do
   End If
  End If
 Loop
 For Each ws In Worksheets
  ws.Range("H3").Value = Val(strKinri)
 Next
End Sub

【41743】Re:金利計算について
お礼  ToShiYo  - 06/8/21(月) 22:14 -

引用なし
パスワード
   ▼かみちゃん さん:

こんばんは、ご指摘ありがとうございました。
よく分かりました。今後生かして行きます。

それから、欲を言えば
シートは2シート目以降に金利が入力され1シート目は何も表示したくないのですが、出来るでしょうか。

If MsgBox("その金利で間違い無いですか " & strKinri, vbYesNo) = vbYes Then
でYesのときは入力画面へ、またキャンセルのときはExit出来ないでしょうか。

よろしければ教えてください。

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