教えて!ExcelVBA!

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

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

構文

構文は以下の通りです。

WorksheetFunction.WorkDay(開始日, 日数, [祝日])

解説

WorksheetFunctionは、ExcelVBAの組み込みオブジェクトで、Excelのワークシート関数をVBAから呼び出す際に使用します。WorkDay関数は、土日を除外した営業日計算を簡単に算出できます。開始日は、計算を開始する日付を指定します。開始日は日付の形式で指定します。祝日(省略可能)は、土日以外に計算から除外したい日(例えば祝日)を指定することができます。祝日をリストとして渡します。

プログラミング例

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

(例1)開始日から5営業日後の日付を求める

Sub 営業日計算()
    Dim 開始日 As Date
    Dim 日数 As Integer
    Dim 結果 As Date
    ' 2024年10月1日から5営業日後の日付を求める
    開始日 = #10/1/2024#
    日数 = 5
    結果 = WorksheetFunction.WorkDay(開始日, 日数)
    ' 結果をメッセージボックスで表示
    MsgBox "5営業日後の日付は " & 結果
End Sub

上記のプログラムでは、2024年10月1日から5営業日後の日付を計算しています。WorkDay関数は土日を自動的に除外し、結果を求めます。結果はMsgBoxに表示されます。

(例2)祝日を除外して営業日を計算

Sub 営業日と祝日計算()
    Dim 開始日 As Date
    Dim 日数 As Integer
    Dim 結果 As Date
    Dim 祝日() As Date
    ' 2024年10月1日から5営業日後の日付を、祝日も考慮して求める
    開始日 = #10/1/2024#
    日数 = 5
    ' 祝日リストを作成(2024年10月9日を祝日とする)
    祝日 = Array(#10/9/2024#)
    結果 = WorksheetFunction.WorkDay(開始日, 日数, 祝日)
    ' 結果をメッセージボックスで表示
    MsgBox "祝日を考慮した5営業日後の日付は " & 結果
End Sub

上記のプログラムでは、開始日から5営業日後の日付を計算する際に、祝日(2024年10月9日)を除外し、祝日も土日も同様にカウントされないようにできます。

まとめ

WorkDay関数は、土日を除外した営業日計算を簡単に算出できる便利な関数です。祝日を引数として渡すことで、特定の日を除外することも可能です。開始日と日数を指定するだけで、営業日後の日付を正確に計算できます。