教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAのWorksheetFunctionオブジェクトで使用するWeekday関数の使い方

構文

構文は以下の通りです。

WorksheetFunction.Weekday(日付, [戻り値の種類])

解説

WorksheetFunctionは、ExcelVBAの組み込みオブジェクトで、Excelのワークシート関数をVBAから呼び出す際に使用します。Weekday関数は、指定した日付が週の何曜日になるかを数値で返す関数です。基本は、日曜日が1、月曜日が2、…、土曜日が7として返されますが、戻り値の種類を指定することで基準を変更することができます。例えば、戻り値の種類に「2」を指定した場合、月曜日を1、日曜日を7として扱います。これにより、プログラムの要件に応じて柔軟に曜日の計算ができます。

プログラミング例

具体的なプログラミング例を紹介します。

(例1)基本的なWeekday関数の使い方

Sub 曜日を調べる()
    Dim 調べる日付 As Date
    Dim 曜日 As Integer
    ' 日付を設定
    調べる日付 = #2024/10/01#
    ' Weekday関数で曜日を取得(デフォルトは日曜日が1)
    曜日 = WorksheetFunction.Weekday(調べる日付)
    ' 結果を表示
    MsgBox "この日は週の" & 曜日 & "日目です。"
End Sub

上記のプログラムは、2024年10月1日が何曜日なのか調べます。

(例2)月曜日を1としてWeekday関数を使用

Sub 月曜日を基準に曜日を調べる()
    Dim 調べる日付 As Date
    Dim 曜日 As Integer
    ' 日付を設定
    調べる日付 = #2024/10/01#
    ' 月曜日を1として曜日を取得
    曜日 = WorksheetFunction.Weekday(調べる日付, 2)
    ' 結果を表示
    MsgBox "この日は月曜日を基準にすると、週の" & 曜日 & "日目です。"
End Sub

上記のプログラムは、月曜日を1として曜日を計算しています。 2024年10月1日が月曜日から数えて何番目の曜日かが表示されます。

まとめ

Weekday関数は、日付が週の何曜日になるかを判定するために使用します。引数として日付を渡し、返却値の種類を指定することで、日曜日または月曜日を基準に曜日を減らすことができます。