エクセル時給計算表の作成手順と初期設定項目入力シート

vbajikyukeisaneyecatch001

エクセルVBAで時給計算表を作成します。手計算で面倒な作業をエクセルで解決していきます。

今回は、全体の作成スケジュールと、初期設定項目入力シートの作成です。

こんにちは、じゅんぱ店長(@junpa33)です。

これから、時給計算表をエクセルVBAで作成していきます。

まず最初にこの記事では、完成までの全工程の紹介してから、まず始めに、初期設定項目をセットできるシートを作成します。

時間の計算は「あまり得意じゃない!」という人も多いのではないでしょうか。さらに時給計算となると大変です。

エクセルでも時間計算を行うためには、チョッとしたテクニックを知っていないといけません。

そこで今回は、時間計算の最たる「勤務時間表」から時給を計算する毎月の「時給計算表」を作成したいと思います。

時給計算表作成の記事編成

エクセルVBAでつくる時給計算表

vbajikyuhyosyokip001

作成する完成形の多機能な時給計算表はこのようになります。(設定値は入力例です)

vbajikyuhyosyokip005

グレー色のセルに基本項目データを入力します。

矢印下001

「対象者計算Book作成」ボタンをクリックすると、個人別の時給計算表が作成されます。

vbajikyuhyosyokip006
矢印下001

テンプレート作成ボタンで、個人別計算シートを作成表示させます。

vbajikyuhyosyokip007
矢印下001

実労時間、支給金額を計算後に、計算表を会計月別に別シート名で保存していきます。

vbajikyuhyosyokip008

(時給計算表は会計月毎に新たに作成していきます。)

エクセルVBAで作る時給計算表の作成手順

以下の順で作成作業を行っていきます。

  1. 「初期設定項目」のシート名で対象者の基本の条件を設定する入力表を作成します。
  2. 支払い対象者1人単位で管理できる時給計算表Bookを新規作成します。(「時給計算表.xlsm」はテンプレートBookになります。)
  3. 対象者別に作成したBookに対象者時給計算表シートを作成
  4. 対象者時給計算表シートに入力された勤務時間を計算するVBAを作成
  5. 勤務時間と時給から、日給計算するVBAを作成
  6. 日給合計でのマルメ計算のVBAを作成
  7. 対象者時給計算シートを月別に自動保存するVBAを作成する
  8. 対象者別時給計算表Bookのシート印刷をプルダウンメニューから選択できるVBAを作成
  9. 初期設定項目シートのコマンドボタンをプロシージャーに紐づける

今回は、まず最初の初期設定項目入力シートを作成します。

初期設定項目入力シートを作る

vbajikyuhyosyokip002

作業順はこのように行います。

  1. エクセルの初期設定をします
  2. シート名の変更をします
  3. Book名を変更します
  4. シートのデザインをします
  5. VBAコードを作る

エクセルの初期設定をします

Microsoft Excel でVBAをすでに使っている方はスルーでOKです。

先ず、領収書作成の「エクセルの初期設定 準備作業をします」の記事で事前準備をしてください。

こちらの記事も参考に準備します。

vbavbekidoeyecatch VBA初めての起動。VBEの立ち上げ、保存と終了

シート名の変更をします

シートタブをダブルクリックして「初期設定項目」と「sheet1」に変更してください。

シートを削除したいときは、シートタブ上で右クリックのメニューで「削除」を選択です。

Book名を変更します

「ファイル」タブ→「名前を付けて保存」をクリックしてください。

保存場所は適宜分かり易い場所へ、

保存名は「時給計算表.xlsm」としてください。

必ずマクロ有効保存で保存します。

シートのデザインをします

「初期設定項目」シートのデザインをこのようにします。

項目入力セルの位置は変更できませんが、デザインはそれぞれでOKです。

vbajikyuhyosyokip005

行と列のサイズ

このデザインの行列サイズは、

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」の方です。

vbabuttoneyecatch コマンドボタンをシートに設置する2つの方法

各ボタンのプロパティはこのようにセットしてください。

ボタン名オブジェクト名Caption
計算表初期化計算表初期化計算表初期化
対象者計算book作成対象者計算book作成対象者計算book作成
テンプレート作成テンプレート作成テンプレート作成
勤務時間計算勤務時間計算勤務時間計算
給与計算給与計算給与計算
時間・金額マルメマルメ時間・金額マルメ
計算シートの保存計算シートの保存計算シートの保存
計算シートをカスタムで保存計算シートカスタム保存計算シートをカスタムで保存
Bookを保存して終了Book保存Bookを保存して終了
シートリスト作成シートリスト作成シートリスト作成
シート印刷シート印刷シート印刷
シートリストクリアシートリストクリアシートリストクリア

ボタンのクリックで起動するプロシージャーの関連付けは、今後順次作成していきます。

VBAコードを作る(設定値を変数に代入)

「初期設定項目」シートで入力した設定値を変数に代入するコードなどを作成していきます。

記述する場所は、VBE(ビジュアルベーシックエディタ)で「Module1」に記述してください。

宣言セクションで宣言する変数

先ず、このプロジェクト(時給計算表ソフト)で共通で利用する変数を宣言セクションで宣言します。

「Public」は全モジュールで有効、「Dim」はこのモジュールで有効になります。

参考記事としてこちらもご覧ください。

vbasengeneyecatch 宣言方法で変数の適用範囲を変える エクセルVBA
VBA
Option 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」を割り当てます。

VBAFormateyecatch Format関数は書式設定のテッパン関数!実務の書式と重要5例
VBA
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コード

計算表を初期化するボタンのVBAコードも作成しておきます。

この「計算表初期化」ボタンには、2つのプロシージャーを関連付けさせます。

最初に起動させるのが「クリアH」プロシージャーです。

このプロシージャーは、

vbacleareyecatch シートクリアーを目的のメソッド別にVBA最速理解

で説明しているコードをほぼそのまま使っています。ただし、シート名が変更されていますので、デフォルトのシート名「Sheet1」にリネームしてからクリアの作業を行います。

VBA
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

vbadoloopeyecatch VBA 回数不定のループ処理はDo LoopとFor Each vbawithstateeyecatch With~End Withの使い方。VBAコードを簡潔に記述する vbacalleyecatch 部品化プロシージャーでCallステートメントは必須

次に起動させるのは、「シート削除」プロシージャーになります。

初期化なので、最初のシート数(「初期設定項目」と「Sheet1」)に戻します。

VBA
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

初期設定項目入力シートの作成 まとめ

vbajikyuhyosyokip003

エクセルVBAで作る時給計算表の作成手順は9ステップで行っていきます。

今回作成した「初期設定項目」シートは、この計算表全体をコントロールするシートになりますので、

作成されるそれぞれの方が、使いやすいデザインで作っていただくのがいいと思います。

ある意味デザイン力の見せどころかもしれません。

次回は、対象者別のBookを作るための、VBAコードの作成手順になります。

短期間でエクセルVBAの独学習得を目指したいなら

vbajikyuhyosyokip004

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

vbastudyeyecatch002 エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

独習のための大切な7つのポイントは、上記記事にて解説しています。

独習によるVBA習得のキーワードは、出来るだけ多くの実例に触れること!

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min