本コーナーでは、私が普段実務で手作業の自動化ツールを作成する中で実装している
処理の一部をピックアップし、掲載用にカスタマイズしたものをご紹介していきます。
全て私の実務ベースで使っているものなので、使いこなすことが出来れば、必ずや
手作業の自動化に一役買ってくれる内容ばかりと勝手に自負しています。
「本だけじゃなくてExcel VBAを実践的に勉強してみたい!」
「ハードル高くて苦手だったけどもう一度VBAを勉強してみたい!」
「実務で役に立つVBAを学びたい!」
そんな方々の学習意欲向上の一助になれば大変嬉しく思います。
おススメ書籍
今回のテーマはこちらです👇
#6:指定日がその月の第〇週目かを取得する
私の場合は実務上、指定された日がその月の第何週目かを知りたいときがあります。
カレンダーを引っ張り出して地道に計算するのも一つの選択肢ですが、VBAerであれば、
これをマクロで実装してみたくなるのはきっと私だけではないはず。ということで
今回は、指定日がその月の第〇週目かを取得するマクロについてご紹介します。
ツールの全体像

まずは任意のエクセルシートに任意のフォーマットで一覧を作成しておきます。
本ツールのVBAコードは以下の通りです。
VBAコード ※パソコンでの閲覧推奨
Option Explicit
'===================================================
'ツール名:カレンダー計算ツール(まえきんブログ掲載用にカスタマイズ)
'作成日:2022/04/09
'処理概要:指定日がその月の第〇週目かを取得する
'付属機能:なし
'作成者:まえきん
'===================================================
'===================================================
'関数名 :メイン関数(データ取得ボタン)
'処理内容:指定日がその月の第〇週目かを取得する
'トリガー:データ取得ボタンを押下した際にコールされる
'引数 :なし
'戻り値 :なし
'===================================================
Private Sub CommandButton1_Click()
'----------
'変数宣言
'----------
Dim FirstDay As String '月初の日付
Dim WeekNumber As Integer '月内週
'----------
'月内週の取得
'----------
With Worksheets("データ取得シート")
'指定日付の月初の日付をセット
FirstDay = DateSerial(Year(.Cells(2, 1).Value), _
Month(.Cells(2, 1).Value), 1)
'月内週のセット
WeekNumber = WorksheetFunction.WeekNum(.Cells(2, 1).Value) - _
WorksheetFunction.WeekNum(FirstDay) + 1
.Cells(2, 2).Value = WeekNumber & "週目"
End With
'----------
'処理完了通知
'----------
MsgBox "データ取得が完了しました!"
End Sub
VBAコード解説
月内週の取得
今回のマクロを実装するうえで、「その年の」何週目かが戻り値となるWeekNum関数
という便利な関数があります。ただ残念ながら、これ単体だけでは「その月」の
第何週目かを求めることが出来ません。この関数を応用し、指定日がその月の
第〇週目かを以下のように計算します。
(例)指定日付 = 2022/04/09の場合
A:指定日付:該当年の週目数
B:指定日付:該当年の指定日付の月初の週目数
A – B + 1 = 指定日付のその月の週目数
↓↓
15週目 – 14週目 + 1 = 2週目
マクロ実行結果
指定日(2022/04/09)はその月の第2週目

処理完了通知

上記の通り、結果が得られましたでしょうか😊
既存の関数単体の使用では求めたい内容にピンポイントでたどり着けなくても、
こうした計算式の応用で実現できるというのはなんとも面白いところですね!
今回はこれで以上です😊
最後まで読んで頂きありがとうございました!ではまた!