次の月曜日を取得する方法を紹介します。応用として、次の○曜日を取得する方法も併せて紹介します。
WorksheetFunction.WorkDay_Intlで解決する
通常だとWeekday関数を利用すると思います(サンプルプログラムの方法1)。今回はWorksheetFunction.WorkDay_Intl関数を利用する方法を紹介します。第3引数は、週末を指定します。文字列で指定した場合は、0が営業日、1が週末(休み)となります。左から月火水木金土日を表します。月曜日以外を週末(休み)とすることで、次の月曜日を求めています。
サンプルプログラム(コピペでOK)
Option Explicit
Sub sample()
Dim day As Date
day = #7/8/2022#
Debug.Print day; WeekdayName(Weekday(day)) ' 2022/07/08 金曜日
Dim day2 As Date
' 方法1
day2 = day + 8 - Weekday(day, vbMonday)
Debug.Print day2; WeekdayName(Weekday(day2)) ' 2022/07/11 月曜日
' 方法2
day2 = WorksheetFunction.WorkDay_Intl(day, 1, "0111111")
Debug.Print day2; WeekdayName(Weekday(day2)) ' 2022/07/11 月曜日
' "0111111" 7桁の数字は左から月火水木金土日に割り当てられています。取得したい曜日に0を設定してください。
' 水曜日に設定したい場合は、"1101111"とします。
' 方法2’
day2 = WorksheetFunction.WorkDay_Intl(day, 1, "1101111")
Debug.Print day2; WeekdayName(Weekday(day2)) ' 2022/07/13 水曜日日
End Sub