VBAで硬貨の最小枚数を求めるプログラムのエラー解決方法

Visual Basic

VBAを使った硬貨の最小枚数を求めるプログラムで発生するエラーについて解説します。特に変数jが期待通りに増加しない問題に焦点を当て、その原因と解決方法をステップバイステップで説明します。

1. プログラムの問題点

質問者が提示したコードでは、変数jが1以降増加していないという問題が発生しています。これにより、ループ内で期待する動作が実行されず、正しい結果が得られません。

エラーが発生する原因として、ループ内で変数jが正しく増加しないことが挙げられます。実際の原因は、FM関数内で返される値が期待した値ではない可能性があります。

2. 解決方法:変数の確認と修正

まずは、変数の値を適切に確認することが重要です。具体的には、変数jが0から99まで増加するようにし、FM関数の動作をチェックしてみてください。

また、変数siharaiの計算式や、FM関数の引数として渡す値を再度確認しましょう。siarariの値が適切に更新されていないと、プログラムが期待通りに動作しません。

3. コード修正例

以下は修正されたコードの一例です。

Sub saisyou() 
 Dim kakaku As Integer 
 Dim maisu As Integer 
 Dim j As Integer 
 Dim min_maisu As Integer 
 Dim siharai As Integer 
 Dim tsuri As Integer 

 min_maisu = 100 
 kakaku = InputBox("金額を入力してください") 
 For j = 0 To 99 
 MsgBox j 
 tsuri = FM(j) 
 siharai = kakaku + j 
 maisu = FM(siharai) + tsuri 
 If maisu < min_maisu Then 
 min_maisu = maisu 
 End If 
 Next j 

 MsgBox min_maisu & "枚" 
End Sub

4. 追加のデバッグポイント

プログラムが期待通りに動作しない場合、次の点も確認してみてください。

  • 変数の初期値が正しいか
  • FM関数が正しい値を返すか
  • 計算におけるデータ型の問題(例えば、整数型と浮動小数点型の違い)

これらをチェックすることで、プログラムの動作を改善することができます。

まとめ

VBAでのエラー解決には、まず問題が発生している箇所を特定し、変数や関数の動作を確認することが重要です。今回の問題では、変数jが増加しない原因を特定し、FM関数の処理を見直すことで解決できます。この方法を使って、正確な最小枚数を求めるプログラムが完成するでしょう。

コメント

タイトルとURLをコピーしました