【EXCEL:VBA】指定した年月の月間勤務表を作成したい

指定した年月の月間勤務表を作成したい

この記事では、ExcelVBAを利用して「指定した年月の月間勤務表」をボタン1つ押すだけで作成する方法について説明しています。

 

日毎の開始時刻、終了時刻、休憩時間を入力すると、日毎の勤務時間が計算されます。

 

日々の勤務表を入力することにより、勤務日数や勤務時間合計が計算されます。

 

毎月手作業で作成した勤務表を年月を指定するだけで、一瞬で作成できるようになります。

 

 

それでは、指定した年月の月間勤務表を作成する機能を作っていきましょう。

 

困っている女性

毎月手作業で月間勤務表を作成しているの。先月の月間勤務表をコピーして、日にちと曜日を変更して作成するの。

困っている女性

地味に面倒なので、もっと簡単に作成する方法はないの!?
それなら、VBAを使えば指定した年月の月間勤務表を一瞬で作成できるよ。

解決する男性

あとは、毎日の勤務開始時刻、終了時刻、休憩時間を入力するだけで、月間の勤務日数と勤務時間合計を計算してくれるよ。月末にあせって、計算しなくてよくなるよ。

解決する男性

困っている女性

それそれ、早く教えてよ。

 

指定した年月の月間勤務表を作成する機能の概要図

以下は、指定した年月の月間勤務表を作成する機能の概要図です。

指定した年月の月間勤務表を作成する機能の概要図

指定した年月の月間勤務表を作成する機能の概要図

 

年と月を指定すると、指定された年月の月間勤務表が作成されます。

機能的にはシンプルですが、手作業で作成するとなると、少し面倒くさい作業となります。

それを、VBAを利用することにより、ボタン1つだけで作成することができるようになります。

 

◆似たような機能については、以下の記事を参照してください。

指定した年月の予定表を作成したい 【EXCEL:VBA】指定した年月の予定表を作成したい

 

何日後・何日前の日付を知りたい 【EXCEL:VBA】何日後・何日前の日付を求めたい

 

指定した年月の月間勤務表を作成する機能を、1つ1つ順番に説明していきます。

 

VBAで月間勤務表を作成する機能を作成する

今回は、メインシートすら必要ありません。

VBAプログラムを入力するだけで、必要な機能を作成できます。

 

開発タブの「Visual Basic」をクリックして、「Microsoft Visual Basic for Applications」を起動します。

Microsoft Visual Basic for Applicationsを起動する

Microsoft Visual Basic for Applicationsを起動する

 

「Microsoft Visual Basic for Applications」にVBAプログラムを入力します。

VBAプログラムを入力する(その1)

VBAプログラムを入力する(その1)

 

VBAプログラムを入力する(その2)

VBAプログラムを入力する(その2)

 

VBAプログラムを入力する(その3)

VBAプログラムを入力する(その3)

 

標準モジュールを追加して、以下のソースを書きます。

 

次に、EXCELを「◯◯◯.xlsm」というような感じでマクロ有効ブック形式で保存します。

 

年月を指定して月間勤務表を作成する機能の使い方

それでは、作成したい年月の月間勤務表を作成する方法を説明します。

 

「開発」タブの「マクロ」をクリックします。

マクロを起動する

マクロを起動する

 

先程作成したVBAプログラム「Main_Proc」が一覧に表示されていますので、選択します。

次に、「実行」ボタンをクリックします。

実行ボタンをクリックする

実行ボタンをクリックする

 

次に、年を指定するダイアログが表示されます。

デフォルトで現在の年が表示されますので、変更したい場合は好きな月を入力します。

そして、OKボタンをクリックします。

年を指定する

年を指定する

 

次に、月を指定するダイアログが表示されます。

デフォルトで現在の月が表示されますので、変更したい場合は好きな月を入力します。

そして、OKボタンをクリックします。

月を指定する

月を指定する

 

しばらく待つと、指定年月のシートが追加され、月間勤務表が作成されます。

今回は、2021年2月を指定しています。

指定した月間勤務表が作成される

指定した月間勤務表が作成される

月間勤務表には、2021年2月の1日から月末日の28日までが縦に並び、各日にちの曜日も表示されます。

あとは毎日、開始時刻と終了時刻、休憩時間を入力していくだけです。

なにかメモして置きたいことは、備考欄に入力しておきます。

 

指定した年月の月間勤務表を作成するVBAプログラム(Main_Proc)の説明

それでは、指定した年月の月間勤務表を作成するVBAプログラム(Main_Proc)を説明します。

1.年の指定ダイアログを表示する

ここでは、年を指定するダイアログを表示させています。

ダイアログにはデフォルトで、現在の年を表示させています。

入力された年を変数「nen」に格納するようにしています。

 

2.月の指定ダイアログを表示する

ここでは、月を指定するダイアログを表示させています。

ダイアログにはデフォルトで、現在の月を表示されています。

入力された月を変数「tuki」に格納するようにしています。

 

3.新しいシートを追加する

ここでは、現在のEXCELに存在するシート数を取得し、全てのシートの右に新しいシートを追加しています。

例えば、シートが3つ存在している場合、左から3つ目のシートの右に新しいシートを追加します。

 

4.対象シートを変数に格納する

ここでは、新しく追加したシートを変数「sht」に格納しています。

この後の処理で何度もこのシートを利用するので、変数に格納しています。

 

5.対象シートの名前を指定された年月に変更する

ここでは、新しく追加シートのシート名を変更しています。

変更するシート名は、ダイアログで指定された年月を設定します。

月が1月~9月の場合、1桁になるのでFormat関数を利用して2桁表示に加工しています。

例えば、1月の”01”に加工されます。

 

6.シート全体を上下中央揃えにする

ここでは、シートのすべてのセルを上下中央揃えにしています。

 

7.シート全体を左右中央揃えにする

ここでは、シートのすべてのセルを左右中央揃えにしています。

 

8.太字を設定する

ここでは、月間勤務表のラベルにあたるセルを太字に設定しています。

この後の処理で表示するラベルの文字を設定します。

ラベルは例えば、勤務表や年、月などです。

 

9.各ラベルを設定する

ここでは、月間勤務表のラベル文字を各セルに設定しています。

例えば、A1セルには”勤務表”、B3セルには”開始時刻”を設定します。

 

10.セルを結合する

ここでは、ラベル「勤務表」を表示させるセルを結合しています。

 

11.年と月を設定する

ここでは、ダイアログで指定された年と月をB2セル、C2セルに設定しています。

 

12.月末日を取得する

ここでは、指定された年月の月末日を取得しています。

具体的には、指定された年月の1日の1ヶ月後の1日前を算出することにより、指定年月の月末日を算出します。

例えば、2021年2月を指定した場合、2021年2月1日の1ヶ月後にあたる2021年3月1日を算出します。

次に、2021年3月1日の1日前にあたる2021年2月28日を算出します。

 

13.日数を計算する

ここでは、指定された年月の日数を計算しています。

正確に言うと、指定年月の1日から月末日までの日数差を計算しています。

例えば、2021年2月なら、2月1日から2月28日の日数差27を算出しています。

2月1日を0行目とした時に、2月28日は何行下になるかを知りたいからです。

 

14.1日から月末日を設定する

ここでは、A列に指定された年月の1日から月末日の日にちを設定しています。

 

15.日にちの表示形式を設定する

ここでは、先程設定した1日から月末日までの日にちに対して、表示形式を変更しています。

例えば、2021年2月1日なら、”1日(月)”のように日にちと曜日が表示されるようにしています。

 

16.時刻の表示形式を設定する

ここでは、時刻の表示形式を設定しています。

2行5列目にあたる「勤務時間計」には、24時間を超えて表示させたいので、”[h]:mm”を設定しています。

次に、1日から月末日の勤務時間を表示させる5列目には、”hh:mm”を設定しています。

 

17.勤務日数の計算式を設定する

ここでは、勤務日数を表示するD2セルにEXCEL関数を設定しています。

1日から月末日までの各行のC列(終了時刻)が入力されているセル数を計算しています。

終了時刻が未入力の日は、出勤していない日としています。

 

18.勤務時間計の計算式を設定する

ここでは、勤務時間計を表示するE2セルにEXCEL関数を設定しています。

1日から月末日までの各行のE列(勤務時間)を合計しています。

 

19.勤務時間の計算式を設定する

ここでは、各行のE列に1日の勤務時間を計算するEXCEL関数を設定しています。

具体的には、終了時刻から開始時刻および休憩時間をマイナスしています。

 

20.罫線を設定する

ここでは、月間勤務表の罫線を設定しています。

A1セルからF列の最終行までを対象に罫線を設定します。

 

21.塗りつぶしの色を設定する

ここでは、各セルの塗りつぶしの色を設定しています。

1行目から3行目およびE列に対して、塗りつぶしの色を設定します。

 

22.列幅を設定する

ここでは、各列の列幅を設定しています。

A列からF列に対して、列幅を設定します。

 

ということで、指定した年月の月間勤務表を作成する機能を利用できるようになりました。

 

それでは、毎月作成する必要がある勤務表をサクッと作成して、自分の勤務状況を記録していきましょう。

もっと重要な作業に集中して、こういった定型的な作業は、VBAを利用して効率化していきましょう。

 

以上です。

 

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です