難易度:★☆☆(かんたん)

※当校のExcel VBAコースを補足する内容となっています。


【Sample6】金種計算表を作る を少し変更して、お釣りを計算するプログラムを作りましょう。

金種計算プログラムのおさらい

セル「A1」に金額を入力して実行すると、最小単位の紙幣・硬貨がそれぞれ何枚必要かを計算して表示します。ただし、金種は10,000円・5,000円・1,000円・500円・100円・50円・10円・5円・1円の9種類とし、2,000円札は計算に入れないこととします。

配列とmod演算子を使えば、短くてシンプルなコードで書けるんだったね

ソースコードを確認しておきましょう。


Sub 金種計算()

    Dim i, j As Long
    Dim w_Kinsyu() As Variant
    Dim w_Amari As Long
        
    w_Kinsyu = Array(10000, 5000, 1000, 500, 100, 50, 10, 5, 1)
    Range("A4:D12") = ""
    w_Amari = Cells(1, 1)
    j = 4
    
    For i = 0 To 8
        If Int(w_Amari / w_Kinsyu(i)) <> 0 Then
            Cells(j, 1) = w_Kinsyu(i)
            Cells(j, 2) = "円"
            Cells(j, 3) = Int(w_Amari / w_Kinsyu(i))
            Cells(j, 4) = "枚"
            w_Amari = w_Amari Mod w_Kinsyu(i)
            j = j + 1
        End If
    Next i
    
End Sub


お釣りを計算する仕組みを考えてみよう

金種計算プログラムを、次のように変更します。

  • 投入金額をセル「B1」に入力します。
  • プログラムを実行すると、4行目を先頭にお釣りが表示されます。
  • ジュースはどれも130円(定数として定義)とします。
  • 投入金額が130円より少ない場合は、「お金が足りません」というメッセージボックスを表示します。
  • この自販機は、5,000円、10,000円も使えます。2,000円札は使えません。
  • マクロ名を「お釣り計算」に変更します。

実行時のイメージ

実行イメージ

Sub お釣り計算()

    Dim i, j As Long
    Dim w_Kinsyu() As Variant
    Dim w_Amari As Long
    
    Const w_Tanka = 130
        
    w_Kinsyu = Array(10000, 5000, 1000, 500, 100, 50, 10, 5, 1)
    Range("A4:D12") = ""
    
    If Cells(1, 2) < w_Tanka Then
        MsgBox "お金が足りません"
        Exit Sub
    End If
    
    w_Amari = Cells(1, 2) - w_Tanka
    j = 4
    For i = 0 To 8
        If Int(w_Amari / w_Kinsyu(i)) <> 0 Then
            Cells(j, 1) = w_Kinsyu(i)
            Cells(j, 2) = "円"
            Cells(j, 3) = Int(w_Amari / w_Kinsyu(i))
            Cells(j, 4) = "枚"
            w_Amari = w_Amari Mod w_Kinsyu(i)
            j = j + 1
        End If
    Next i
    
End Sub

再計算しやすいようにしてみよう

VBAのプログラムを実行するとき、今までは「Alt」キーを押しながら「F8」キーを押して、マクロ選択のウィンドウから動かしたいプログラムを選んで「実行」してきました。

挿入した画像をクリックすることによって、プログラムが動くようにしてみましょう。

「実行ボタン」を作ってクリックでプログラムが動く方法は、「ボタンからプログラムを動かす」にあります。

挿入した画像からマクロを実行

  • まずは上の画像を右クリックして、「名前を付けて画像を保存」しておきましょう。保存しておくフォルダは特に決まりはありませんが、どこに保存したか覚えておくようにしましょう。一般的にはピクチャフォルダです。
  • Excelシートに画像を挿入します。大きさや位置は自由に決めてください。
  • 画像を右クリックし、「マクロの登録」をクリックします。
  • 「マクロの登録」の画面が表示されるので、マクロ名「お釣り計算」をクリック、さらに「OK」をクリックします。
  • 画像をクリックすると、プログラムが動作するようになりました。セル「B1」の数字を書き換えながら、確かめてみましょう。

マクロの登録をした後で画像の大きさや位置を変更したい場合は、画像を右クリックしてハンドル(周りの白い丸印)を表示させてから行います。