質問: Day(Date) Worksheets(i + 11).Select ↑+11となっているのは、日付のシート以外のシートが入っている為です。 この状態から、祝日やお盆休み、土曜出勤も反映させたいです 休業日の”日”のみをまとめたシート(シート名:Holiday)を作成してあります。 月初めに翌月のブックを開いた時に 月末の日付のシートも開けるようにしたいです。 (例:8月1日に1営業日前の7月30日を開くなど) 勉強中の為、解説付きだと有難いです。 宜しくお願いします。
回答: この処理はブックを開いた時自動で行いたいのですね。 月初めに開いた時は、前月のブックを開かなくてはならないので、ブック名がどうなっているかの情報が必要です。 これらのブックは皆同じフォルダにあるとして、ブック名は月で1ブックなので「yyyy年m月.xlsm」とします。 今月のブックは 2021年8月.xlsm という事です。 シートを順番で取得すると日付前のシートに増減があるたびにマクロを変更しなくてはならないので、日の数字で取得する方がいいです。 Holidayシートの休日の日付が入っているセル範囲に「休日」と名前を定義して下さい。 Thisworkbookに Private Sub Workbook_Open() Dim wdate As Date Dim s As String Dim wb As Workbook wdate = WorksheetFunction.WorkDay(Date, -1, Range("休日")) s = CStr(Day(wdate)) If Month(wdate) = Month(Date) Then Worksheets(s).Select Else Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & Format(wdate, "yyyy年m月") & ".xlsm") wb.Worksheets(s).Select End If End Sub