VBA

【ExcelVBA】指定日時以外の実行を禁止するマクロ ~残業させないぞ①~

定時外の実行を禁止するマクロ
上司
上司
もりさん、聞いておくれ

部下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つの関数を組み合わせて、「今日の曜日」を取得します。

②現在時刻を取得する

Time関数を使用して、マクロ実行時の「現在時刻」を取得します。

Time関数とは
→システム時刻(通常は現在時刻)を返す関数

Time関数の戻り値を変数に格納します。

③始業時刻と終業時刻を設定する

基準となる2つの時刻を変数に格納します。時:分:秒を指定します。

④条件を組み合わせてコードを作る

ここまでで「今日の曜日」「現在時刻」を取得できました。これらと「マクロを停止する条件」を組み合わせます。

下記4つのいずれかに合致する場合、Endステートメントでマクロを強制終了します。

  1. 「現在時刻」が始業時刻より前
  2. 「現在時刻」が終業時刻より後
  3. 「今日の曜日」が土曜日
  4. 「今日の曜日」が日曜日

 

もり
もり
このプロシージャをマクロの先頭に仕込んでおけばOK!定時外は動作しないよ!

 

⑤残業したい部下、マクロを使えない

残業したい部下
残業したい部下
よーし、うざい上司も帰ったし、今日も残業するぞ~

残念!定時外に実行しても、強制終了されてしまいますよ。

 

残業したい部下
残業したい部下
ぐぬっ!なんだこれは!使えないじゃないか・・・
もり
もり
やった!大成功だね

 

残業したい部下
残業したい部下
・・・。マクロが動かないなら手作業でやればいいな

おっ、ますます残業代稼げちゃうぞ(ぐふふ)

もり
もり
コラーっ!早く帰りなさーい!

そのExcelブック、いっそ開かないようにしちゃうわよ!

(次回へ続く→)【ExcelVBA】指定日時以外は開けないブック ~残業させないぞ②~

非エンジニアもプログラミングを学習する時代!

「プログラミング」ってエンジニアとかプログラマーの人がするものでしょ?文系の私には関係ないや~って思っていませんか?

いまは、非エンジニアもプログラミングを学習する時代です!

「プログラミングの必修化」をご存知ですか?

  • 2020年~ 小学校で開始
  • 2021年~ 中学校で開始
  • 2022年~ 高等学校で開始
  • 2024年~ 高校受験科目に新設

学校での必修化に向けて、すでに子ども向けプログラミングスクールが多数開校されています。

あと数年もすれば、あたりまえにプログラミングができる新入社員がやってくる時代になります。

プログラミングってなに?どんなもの?まずは無料体験から試してみませんか?

 

1週間の無料体験あり!
オンラインスクール実績No.1!