上司
もりさん、聞いておくれ
部下Aの残業が多いって人事部から怒られてしまったよ
もり
ええ?Aさん、そんなに仕事抱えてましたっけ?
上司
いいや、残業代目当ての「生活残業」ってやつだよ。ワシが帰った後にこそこそ会社に残ってるらしい
もり
なるほど…強制的に帰らせる仕組みが必要そうですね
指定の日時以外は実行できないマクロの作り方を紹介します。
マクロ実行時に「今日の曜日」「現在時刻」を取得して、指定条件の場合は強制終了させます。
スポンサーリンク
指定の日時以外の実行を禁止するマクロ
会社の「定時」時間内のみ、動作するマクロを作ります。
「下記条件に合致しない場合はマクロを強制終了する」という仕組みです。
- 月曜日~金曜日
- 9時~18時
もり
それじゃあ作っていくよー!
①今日の曜日を取得する
Weekday関数とDate関数を組み合わせて、マクロ実行時の「曜日」を取得します。
Weekday関数とは
→指定日付の「曜日」を返す関数
使い方:Weekday(日付)
戻り値: 1 (日曜) ~ 7 (土曜) の値
Weekday関数の戻り値の一覧です
定数 | 値 | 曜日 |
---|---|---|
vbSunday | 1 | 日曜日 |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
Date関数とは
→システム日付(通常は当日の日付)を返す関数
これら2つの関数を組み合わせて、「今日の曜日」を取得します。
1 2 |
Dim TodaysDay As Long TodaysDay = Weekday(Date) '今日の曜日 |
②現在時刻を取得する
Time関数を使用して、マクロ実行時の「現在時刻」を取得します。
Time関数とは
→システム時刻(通常は現在時刻)を返す関数
Time関数の戻り値を変数に格納します。
1 2 |
Dim CurrentTime As Date CurrentTime = Time |
③始業時刻と終業時刻を設定する
基準となる2つの時刻を変数に格納します。時:分:秒を指定します。
1 2 3 |
Dim OpeningTime As Date, FinishingTime As Date OpeningTime = "9:00:00" '始業時刻の設定 FinishingTime = "18:00:00" '終業時刻の設定 |
④条件を組み合わせてコードを作る
ここまでで「今日の曜日」「現在時刻」を取得できました。これらと「マクロを停止する条件」を組み合わせます。
下記4つのいずれかに合致する場合、Endステートメントでマクロを強制終了します。
- 「現在時刻」が始業時刻より前
- 「現在時刻」が終業時刻より後
- 「今日の曜日」が土曜日
- 「今日の曜日」が日曜日
もり
このプロシージャをマクロの先頭に仕込んでおけばOK!定時外は動作しないよ!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub CheckDateAndTime() Dim TodaysDay As Long TodaysDay = Weekday(Date) '今日の曜日を取得 Dim CurrentTime As Date CurrentTime = Time '現在時刻を取得 Dim OpeningTime As Date, FinishingTime As Date OpeningTime = "9:00:00" '始業時刻の設定 FinishingTime = "18:00:00" '終業時刻の設定 '現在時刻が「始業時刻より前」または「終業時刻より後」 '今日の曜日が「土曜日」または「日曜日」 If CurrentTime < OpeningTime Or CurrentTime > FinishingTime Or _ TodaysDay = vbSaturday Or TodaysDay = vbSunday Then MsgBox "定時外のためこのマクロは使用できません", vbCritical, "定時外です" End 'マクロを強制終了 End If End Sub |
⑤残業したい部下、マクロを使えない
残業したい部下
よーし、うざい上司も帰ったし、今日も残業するぞ~
残念!定時外に実行しても、強制終了されてしまいますよ。
残業したい部下
ぐぬっ!なんだこれは!使えないじゃないか・・・
もり
やった!大成功だね
残業したい部下
・・・。マクロが動かないなら手作業でやればいいな
おっ、ますます残業代稼げちゃうぞ(ぐふふ)
もり
コラーっ!早く帰りなさーい!
そのExcelブック、いっそ開かないようにしちゃうわよ!
(次回へ続く→)【ExcelVBA】指定日時以外は開けないブック ~残業させないぞ②~
スポンサーリンク
スポンサーリンク