さて、本題です
2022/9/16(金)休暇取得、2022/9/19(月)休暇取得があれば、9/17、9/18は休暇期間中と考え、
2022/9/16(金)休暇取得、2022/9/19(月)休暇取得がなければ、9/17、9/18は休暇期間中と考えない、
「休日を挟んで連続していたら連続とみなす。そうでなかったら前のレコードの日付を終了日とする」ですね。上記丁寧版では無意味だった「終了日となりうる日付」と「休日を考慮した連続した日付の最終日」をきっちり分けて考えてあげればいいですね
Do Until rs.EOF
If rs!氏名 <> 氏名 Then
Debug.Print 終了日
Debug.Print rs!氏名, rs!休暇取得日, ;
氏名 = rs!氏名
終了日 = rs!休暇取得日
'//--処理が一本化できたので削除
'// rs.MoveNext
'//--ここまで
'//同じチェックをあとでやるので削除・一本化
'// ElseIf rs!休暇取得日 = 終了日 + 1 Then
'// 終了日 = 終了日 + 1
'// rs.MoveNext
'//--ここまで
Else
'//休日分、判定する日付をずらす
Dim 休暇期間の翌日 As Date
休暇期間の翌日 = 終了日 + 1
Do While(Is休日(休暇期間の翌日))
休暇期間の翌日 = 休暇期間の翌日 + 1
Loop
If rs!休暇取得日 = 休暇期間の翌日 Then
終了日 = 休暇期間の翌日
Else
Debug.Print 終了日
Debug.Print rs!氏名, rs!休暇取得日, ;
終了日 = rs!休暇取得日
End If
End If
'//レコード移動処理も一本化
rs.MoveNext
Loop
通報 ...