エクセルVBAで時給計算表を作ります。
時給計算は、手計算ではかなり面倒な作業です。エクセルでも普通に計算するには厄介なところがあります。
この厄介をこれから解決していきます。最初に初期設定項目からです。
これからのテーマとして、時給計算表をエクセルVBAで作成していきます。
まず最初にこの記事では、完成までの全工程の紹介と初期設定項目をセットできるシートを作成します。
こんにちは、じゅんぱ店長(@junpa33)です。
時間の計算は「けっこう苦手!」という人も多いのではないでしょうか。時給を扱うので大変です。
エクセルで時間計算を行うのも、チョッとしたテクニックを知っていないといけません。
そこで今回は、時間計算の最たる「勤務時間表」から時給を乗じた毎月の「時給計算表」を作成したいと思います。
時給計算に関連する記事の一覧
無料DL!時給計算表エクセルソフト 個人別ブックで管理出来ます。
の記事で行うことが出来ます。
コンテンツ
エクセルVBAで時給計算表を作成ー全工程の紹介ー
ここで作成する完成形の多機能時給計算表はこのようになります。
グレイのセルに基本項目データを入力します。
実労時間、支給金額を計算後計算シート保存すると、会計月別に別シートを作成して保存していきます。
(時給計算表は会計月毎に作成してください。)
このテーマで作る時給計算表の全工程
- 「初期設定項目」シートで環境基本条件をセットします。
- 支払い対象者一人毎に時給計算表Bookを複製します。(この「時給計算表.xlsm」はテンプレートBookになります。)
- 個人別に複製作成したBookでテンプレートシートを作成
- 日々勤務時間情報を入力
- 何かの基準期間の区切りで時間計算、給与計算、マルメ計算をします。
- 翌月に、前月の勤務時間計算表を「計算シートの保存」として、「月」シートとして作成保存します。
- シートをプリントアウトしたいときは、「シートリスト作成」をしてプルダウンメニューでシートを選択
- 「シート印刷」でプレビュー確認して印刷することが出来ます。
- 翌月「月」シートが増えた時は、一旦「シートリストクリア」からの同じ流れの作業で印刷出来ます。
はじめに初期設定項目を入力するシートを作る
エクセルの初期設定をします
Microsoft Excel でVBAをすでに使っている方はスルーでOKです。
先ず、領収書作成の「エクセルの初期設定 準備作業をします」の記事で事前準備をしてください。
こちらの記事も参考に準備します。
シート名の変更をします
シートタブをダブルクリックして「初期設定項目」と「sheet1」に変更してください。
シートを削除したいときは、シートタブ上で右クリックのメニューで「削除」を選択です。
Book名を変更します
「ファイル」タブ→「名前を付けて保存」をクリックしてください。
保存場所は適宜分かり易い場所へ、
保存名は「時給計算表.xlsm」としてください。
必ずマクロ有効保存で保存します。
シートのデザインをします
「初期設定項目」シートのデザインをこのようにします。
項目入力セルの位置は変更できませんが、デザインはそれぞれでOKです。
行と列のサイズ
このデザインの行列サイズは、
A列、I列・・・・・・・72ピクセル
B列、C列・・・・・・・160ピクセル
D列、E列、F列、G列・・80ピクセル
H列・・・・・・・・・・124ピクセル
1~13行・・・・・・・・36ピクセル
データ入力セル
データ入力セルは、
会計期間・・・D5、F5セル
対象者・・・・C6セル 役職・・・F6セル
基本給・・・・C7セル 時間外割増・・・F7
合計時間マルメ・・・C8
合計金額マルメ・・・C9
コマンドボタンの設置
コマンドボタンとコンボボックスを設置します。
コマンドボタンの設置はこちらの記事を参考にしてください。今回設置するのは「ActiveX」の方です。
各ボタンのプロパティはこのようにセットしてください。
ボタン名 | オブジェクト | キャプション |
計算表初期化 | 計算表初期化 | 計算表初期化 |
対象者計算book作成 | 対象者計算book作成 | 対象者計算book作成 |
テンプレート作成 | テンプレート作成 | テンプレート作成 |
勤務時間計算 | 勤務時間計算 | 勤務時間計算 |
給与計算 | 給与計算 | 給与計算 |
時間・金額マルメ | マルメ | 時間・金額マルメ |
計算シートの保存 | 計算シートの保存 | 計算シートの保存 |
Bookを保存して終了 | Book保存 | Bookを保存して終了 |
シートリスト作成 | シートリスト作成 | シートリスト作成 |
シート印刷 | シート印刷 | シート印刷 |
シートリストクリア | シートリストクリア | シートリストクリア |
VBAコードを作る(設定値を変数に代入)
「初期設定項目」シートで入力した設定値を変数に代入するコードなどを作成していきます。
記述する場所は、VBEで「Module1」に記述してください。
宣言セクションで宣言する変数
先ず、このプロジェクト(時給計算表ソフト)で共通で利用する変数を宣言セクションで宣言します。
「Public」は全モジュールで有効、「Dim」はこのモジュールで有効になります。
参考記事として
をご覧ください。
Option Explicit
Public EmpName As String, 年月日 As String
Public OriBName As String
Public TCos, TwCos, TMal, KMal
Public SD As Date, ED As Date
Dim SaName As String, SaNamea As String
設定値を変数に代入する
設定値を変数に代入するVBAコードを作成します。
会計期間は、始まりを「SD」終わりを「ED」
対象者名は「EmpName」空欄の場合は強制的に「年月日」を割り当てます。
基本給は「TCos」、時間外割増は「TwCos」
時間マルメは「TMal」、金額マルメは「KMal」を割り当てます。
Sub 設定値代入() Dim MB As Long Worksheets("初期設定項目").Select 'Format,Year,Month関数を利用します 年月日 = Format(Date, "yymmdd") '会計期間をセット SD = Worksheets("初期設定項目").Range("D5").Value ED = Worksheets("初期設定項目").Range("F5").Value '対象者名を変数に代入します EmpName = Worksheets("初期設定項目").Range("C6").Value If EmpName = "" Then EmpName = 年月日 Range("C6") = 年月日 End If '基本時給をセット TCos = Worksheets("初期設定項目").Range("C7").Value '時間外割増率をセット TwCos = Worksheets("初期設定項目").Range("F7").Value / 100 '時間マルメをセット TMal = Worksheets("初期設定項目").Range("C8").Value '金額マルメをセット KMal = Worksheets("初期設定項目").Range("C9").Value End Sub
計算表初期化ボタンに対応するVBAコード
計算表を初期化するボタンのVBAコードも作成しておきます。
この初期化ボタンには、2つのプロシージャーを対応させます。
最初に起動させるのが「クリアH」プロシージャーです。
このプロシージャーは、
で説明しているコードをほぼそのまま使っています。ただし、シート名が変更されていますので、デフォルトのシート名「Sheet1」にリネームしてからクリアの作業を行います。
「For Each~Next」の使い方についてはこちらの記事を参考にしてください。
VBA 回数不定のループ処理はDo LoopとFor Each
With~End Withの使い方については、この記事を参考にしてください。
With~End Withの使い方。VBAコードを簡潔に記述する
Callステートメントの使い方についてはこの記事を参考にしてください。
Sub クリアH()
Dim Sh As Worksheet
Call 設定値代入
If Worksheets("初期設定項目").Range("H5") = "" Then
Worksheets("初期設定項目").Range("C6") = ""
End If
For Each Sh In Worksheets
If Sh.Name = EmpName & "時給計算表" Then
Sh.Name = "Sheet1"
Exit For
End If
Next
With Worksheets("Sheet1")
.Cells.Clear
.DrawingObjects.Delete
.PageSetup.PrintTitleRows = False
.PageSetup.PrintArea = False
.PageSetup.RightHeader = ""
.PageSetup.CenterFooter = ""
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub
次に起動させるプロシージャーは、「シート削除」になります。
初期化なので、最初のシート数(「初期設定項目」と「Sheet1」)に戻します。
Sub シート削除() Dim Sh As Worksheet For Each Sh In Worksheets If Sh.Name <> "初期設定項目" And Sh.Name <> "Sheet1" Then '削除確認メッセージを出さなくする Application.DisplayAlerts = False Sh.Delete End If Next '削除確認メッセージが出るようにする(元に戻す) Application.DisplayAlerts = True End Sub
時給計算表の全工程と初期設定項目入力シートのまとめ
エクセルVBAで作る時給計算表の全体としての工程は9ステップと少々長くなります。
今回の「初期設定項目」シートは、この計算表全体をコントロールするシートになりますので、
作成されるそれぞれの方が、使いやすいデザインで作っていただくのがいいと思います。
デザイン力の見せどころかもしれません。
次回は、対象者別のBookを作るための、VBAコードの作成手順になります。
短期間でエクセルVBAの独学習得を目指したいなら
エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、
出来るだけ多くの実例に触れること!
です。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
このサイトでよく使うVBAのコードのトピックを纏めています。
今回の記事はここまでです。 最後までご覧いただき有難うございました。









