今回は、以前の頁で使った出勤簿から、給与計算のマクロ化をしたいと思います。
もう一度マクロ化する作業内容を確認しましょう。
出勤簿から給与計算マクロを作ろう
- 出勤時刻と退勤時刻から勤務時間を取得する
- アルバイト従業員ごとに勤務時間の小計を出す
- 勤務時間に時給を掛けて給料を算出する
今回は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型の「長整数型」にしています。 長整数型にすることで、整数型では収まりきらない数値を扱うことができます。
まとめ
今回で、出勤簿プログラムは一通りの完成となります。
次回は今までに作成したプログラムを、サブプロシージャとして呼び出すプロシージャの作成をご説明します。
コメント