出勤簿から給与計算マクロを作ろう4

Excel VBA

今回は、以前の頁で使った出勤簿から、給与計算のマクロ化をしたいと思います。

もう一度マクロ化する作業内容を確認しましょう。

出勤簿から給与計算マクロを作ろう

  1. 出勤時刻と退勤時刻から勤務時間を取得する
  2. アルバイト従業員ごとに勤務時間の小計を出す
  3. 勤務時間に時給を掛けて給料を算出する

今回は3番の、「勤務時間に時給を掛けて給料を算出する」を作成したいと思います。

勤務時間に時給を掛けて給料を算出する

処理を想定してみる

この処理では、以前のページで作成したプログラムで出した小計に、1,200円の時給を掛けて、給料を算出します。

それでは必要な処理を挙げてみましょう。

  • 時給を分単位に割る
  • 従業員毎に集計された勤務時間に掛ける
    • →集計時間がある行のみ処理する
  • シートに表示する

7列目が勤務時間となっているので、計算された額は8列目に表示することとします。

プログラムの作成

集計された時間が分単位であるため、時給も分単位に直してから給料を算出することにします。

Dim Hunkyu As Integer
Hunkyu = 1200 \ 60  '割り切れない場合を想定して商を変数に

今回はちょうど割り切れる時給になってはいますが、割り切れない場合も想定し、「\」で「商」を計算しています。

次にアルバイト従業員毎に集計された勤務時間に、計算した分給を掛け、8列目にセットします。

Dim i As Integer      'ループカウンタ用
Dim Kyuryo As Long  'Integer型では収まりきらないため

Kyuryo = Cells(i, 7).Value * Hunkyu
Cells(i, 8).Value = Kyuryo

この処理を、7列目に値が集計されている行全てで行います。

Do Until Cells(i, 7).Value = ""   '7列目が空欄になるまでループ
    i = i + 1
Loop

以上の処理を組み合わせるとこうなります。

Sub KyuryoKeisan()

    Dim Kyuryo As Long  'Integer型では収まりきらないため
    Dim Hunkyu As Integer
    Dim i As Integer
    
    Hunkyu = 1200 \ 60  '割り切れない場合を想定して商を変数に
    i = 2      '2行目から処理
    
    Do Until Cells(i, 7).Value = ""   '7列目が空欄になるまでループ
        Kyuryo = Cells(i, 7).Value * Hunkyu
        Cells(i, 8).Value = Kyuryo
        i = i + 1
    Loop
End Sub

このようなプログラムになります。

今回のプログラムでは、給料を一時的に格納する変数の型をLong型の「長整数型」にしています。 長整数型にすることで、整数型では収まりきらない数値を扱うことができます。

まとめ

今回で、出勤簿プログラムは一通りの完成となります。

次回は今までに作成したプログラムを、サブプロシージャとして呼び出すプロシージャの作成をご説明します。

コメント

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