- 最大7日後の日付なので、元の日付に1づつ加え、Format関数で曜日を求め"月"となる日までループしています。
"月"となった日付が求める日付になりますので、セルにその値を書き込み、ループから抜けています。
Sub test30()
Dim i As Long, j As Long
For i = 3 To 5
For j = 1 To 7
If Format(Cells(i, 2).Value + j, "aaa") = "月" Then
Cells(i, 4).Value = Cells(i, 2).Value + j
Exit For
End If
Next j
Next i
End Sub
- Weekday関数で曜日を求め、その曜日に応じた日数を加えるという方法です。
Sub test31()
Dim i As Long, j As Long
Dim d As Integer
For i = 3 To 5
Select Case Weekday(Cells(i, 2).Value)
Case 1
d = 1
Case 2
d = 7
Case 3
d = 6
Case 4
d = 5
Case 5
d = 4
Case 6
d = 3
Case 7
d = 2
End Select
Cells(i, 4).Value = Cells(i, 2).Value + d
Next i
End Sub
- Weekday関数で月曜日から開始したケースでは、8-Weekday(Cells(i, 2).Value, 2) を加えることで求めることができます。
Sub test32()
Dim i As Long, j As Long
For i = 3 To 5
Cells(i, 4).Value = Cells(i, 2).Value + 8 - Weekday(Cells(i, 2).Value, 2)
Next i
End Sub