エクセルVBAで時給計算表を作成します。手計算で面倒な作業をエクセルで解決していきます。
今回は、全体の作成スケジュールと、初期設定項目入力シートの作成です。
こんにちは、じゅんぱ店長(@junpa33)です。
これから、時給計算表をエクセルVBAで作成していきます。
まず最初にこの記事では、完成までの全工程の紹介してから、まず始めに、初期設定項目をセットできるシートを作成します。
時間の計算は「あまり得意じゃない!」という人も多いのではないでしょうか。さらに時給計算となると大変です。
エクセルでも時間計算を行うためには、チョッとしたテクニックを知っていないといけません。
そこで今回は、時間計算の最たる「勤務時間表」から時給を計算する毎月の「時給計算表」を作成したいと思います。
時給計算表作成の記事編成
- 時給計算表作成エクセルソフトの使い方とダウンロード
コンテンツ
エクセルVBAでつくる時給計算表
作成する完成形の多機能な時給計算表はこのようになります。(設定値は入力例です)
グレー色のセルに基本項目データを入力します。
「対象者計算Book作成」ボタンをクリックすると、個人別の時給計算表が作成されます。
テンプレート作成ボタンで、個人別計算シートを作成表示させます。
実労時間、支給金額を計算後に、計算表を会計月別に別シート名で保存していきます。
(時給計算表は会計月毎に新たに作成していきます。)
エクセルVBAで作る時給計算表の作成手順
以下の順で作成作業を行っていきます。
- 「初期設定項目」のシート名で対象者の基本の条件を設定する入力表を作成します。
- 支払い対象者1人単位で管理できる時給計算表Bookを新規作成します。(「時給計算表.xlsm」はテンプレートBookになります。)
- 対象者別に作成したBookに対象者時給計算表シートを作成
- 対象者時給計算表シートに入力された勤務時間を計算するVBAを作成
- 勤務時間と時給から、日給計算するVBAを作成
- 日給合計でのマルメ計算のVBAを作成
- 対象者時給計算シートを月別に自動保存するVBAを作成する
- 対象者別時給計算表Bookのシート印刷をプルダウンメニューから選択できるVBAを作成
- 初期設定項目シートのコマンドボタンをプロシージャーに紐づける
今回は、まず最初の初期設定項目入力シートを作成します。
初期設定項目入力シートを作る
作業順はこのように行います。
- エクセルの初期設定をします
- シート名の変更をします
- Book名を変更します
- シートのデザインをします
- VBAコードを作る
エクセルの初期設定をします
Microsoft Excel でVBAをすでに使っている方はスルーでOKです。
先ず、領収書作成の「エクセルの初期設定 準備作業をします」の記事で事前準備をしてください。
こちらの記事も参考に準備します。
VBA初めての起動。VBEの立ち上げ、保存と終了シート名の変更をします
シートタブをダブルクリックして「初期設定項目」と「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」の方です。
コマンドボタンをシートに設置する2つの方法各ボタンのプロパティはこのようにセットしてください。
ボタン名 | オブジェクト名 | Caption |
---|---|---|
計算表初期化 | 計算表初期化 | 計算表初期化 |
対象者計算book作成 | 対象者計算book作成 | 対象者計算book作成 |
テンプレート作成 | テンプレート作成 | テンプレート作成 |
勤務時間計算 | 勤務時間計算 | 勤務時間計算 |
給与計算 | 給与計算 | 給与計算 |
時間・金額マルメ | マルメ | 時間・金額マルメ |
計算シートの保存 | 計算シートの保存 | 計算シートの保存 |
計算シートをカスタムで保存 | 計算シートカスタム保存 | 計算シートをカスタムで保存 |
Bookを保存して終了 | Book保存 | Bookを保存して終了 |
シートリスト作成 | シートリスト作成 | シートリスト作成 |
シート印刷 | シート印刷 | シート印刷 |
シートリストクリア | シートリストクリア | シートリストクリア |
ボタンのクリックで起動するプロシージャーの関連付けは、今後順次作成していきます。
VBAコードを作る(設定値を変数に代入)
「初期設定項目」シートで入力した設定値を変数に代入するコードなどを作成していきます。
記述する場所は、VBE(ビジュアルベーシックエディタ)で「Module1」に記述してください。
先ず、このプロジェクト(時給計算表ソフト)で共通で利用する変数を宣言セクションで宣言します。
「Public」は全モジュールで有効、「Dim」はこのモジュールで有効になります。
参考記事としてこちらもご覧ください。
宣言方法で変数の適用範囲を変える エクセルVBAOption Explicit
Public EmpName As String, 年月日 As String
Public OriBName As String
Public TCos, TwCos, TMal, KMal
Public SD As Date, ED As Variant
Public KShH As Boolean
Dim SaName As String, SaNamea As String
設定値を変数に代入するVBAコードを作成します。
会計期間は、始まりを「SD」終わりを「ED」
対象者名は「EmpName」空欄の場合は強制的に「年月日」を割り当てます。
基本給は「TCos」、時間外割増は「TwCos」
時間マルメは「TMal」、金額マルメは「KMal」を割り当てます。
‘計算シートの保存法を取得は、「KShH」を割り当てます。
Format関数は書式設定のテッパン関数!実務の書式と重要5例Sub 設定値代入()
Dim MB As Long
Worksheets("初期設定項目").Select
'会計期間をセット
Range("D5", "F5").NumberFormatLocal = "dd"
STEP0:
If Range("D5") = "" Then
MsgBox "会計期間が未入力です。" & vbCrLf & "入力してください。" _
, vbExclamation, "時給計算表作成"
STOP1:
On Error Resume Next
SD = Application.InputBox("開始日を入力してください。", _
Title:="時給計算表作成", Type:=2)
On Error GoTo 0
If SD = False Then
MsgBox "日付未入力ではテンプレート作成出来ません。", _
vbExclamation, "時給計算表作成"
GoTo STOP1
ElseIf SD = "" Then
MsgBox "日付未入力ではテンプレート作成出来ません。", _
vbExclamation, "時給計算表作成"
GoTo STOP1
ElseIf SD < 1 Or SD > 31 Then
MsgBox "異常値ではテンプレート作成出来ません。", _
vbExclamation, "時給計算表作成"
GoTo STOP1
Else
With Worksheets("初期設定項目")
.Range("D5").Value = SD
End With
End If
ElseIf Range("D5") < 1 Or Range("D5") > 31 Then
MsgBox "異常値ではテンプレート作成出来ません。", _
vbExclamation, "時給計算表作成"
Range("D5") = ""
GoTo STEP0:
Else
With Worksheets("初期設定項目")
.Range("D5").Value = SD
End With
End If
STEP2:
If Range("F5") = "" Then
MsgBox "会計期間が未入力です。" & vbCrLf & "入力してください。" _
, vbExclamation, "時給計算表作成"
STOP3:
On Error Resume Next
ED = Application.InputBox("開始日を入力してください。", _
Title:="時給計算表作成", Type:=2)
On Error GoTo 0
If ED = False Then
MsgBox "日付未入力ではテンプレート作成出来ません。", _
vbExclamation, "時給計算表作成"
GoTo STOP3
ElseIf ED = "" Then
MsgBox "日付未入力ではテンプレート作成出来ません。", _
vbExclamation, "時給計算表作成"
GoTo STOP3
ElseIf ED < 1 Or ED > 31 Then
MsgBox "異常値ではテンプレート作成出来ません。", _
vbExclamation, "時給計算表作成"
GoTo STOP3
Else
With Worksheets("初期設定項目")
.Range("F5").Value = ED
End With
End If
ElseIf Range("F5") < 1 Or Range("F5") > 31 Then
MsgBox "異常値ではテンプレート作成出来ません。", _
vbExclamation, "時給計算表作成"
Range("F5") = ""
GoTo STEP2:
Else
With Worksheets("初期設定項目")
.Range("F5").Value = ED
End With
End If
With Worksheets("初期設定項目")
SD = .Range("D5").Value
ED = .Range("F5").Value
End With
'対象者名を変数に代入します
EmpName = Worksheets("初期設定項目").Range("C6").Value
'基本時給をセット
TCos = Worksheets("初期設定項目").Range("C7").Value
'時間外割増率をセット
TwCos = Worksheets("初期設定項目").Range("F7").Value / 100
'時間マルメをセット
TMal = Worksheets("初期設定項目").Range("C8").Value
'金額マルメをセット
KMal = Worksheets("初期設定項目").Range("C9").Value
'計算シートの保存法を取得
KShH = Worksheets("初期設定項目").Range("E10").Value
End Sub
計算表を初期化するボタンのVBAコードも作成しておきます。
この「計算表初期化」ボタンには、2つのプロシージャーを関連付けさせます。
このプロシージャーは、
シートクリアーを目的のメソッド別にVBA最速理解で説明しているコードをほぼそのまま使っています。ただし、シート名が変更されていますので、デフォルトのシート名「Sheet1」にリネームしてからクリアの作業を行います。
Sub クリアH()
Dim Sh As Worksheet
Call Module1.設定値代入
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
'リネームしたSheet1をデフォルトに戻す
With Worksheets("Sheet1")
With .Cells
.Clear
.UseStandardHeight = True
.UseStandardWidth = True
End With
.DrawingObjects.Delete
With .PageSetup
.PrintTitleRows = False
.PrintArea = False
.RightHeader = ""
.CenterFooter = ""
End With
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習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、出来るだけ多くの実例に触れること!
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。