|
こんにちは
アクティブシートのA列に「第1土曜日」と記載後
実行してくださいB列に日付が表示されます。
A B
第1土曜日 2006/6/3
第1日曜日 2006/6/4
第2土曜日 2006/6/10
第2日曜日 2006/6/11
第3土曜日 2006/6/17
第3日曜日 2006/6/18
第4土曜日 2006/6/24
第4日曜日 2006/6/25
上記のようになるはずです。
Sub Test()
Dim Myda As Date, cur_date As Date, cur_eddate As Date, lp As Long
Dim Co As Long, Co1 As Long, DaSt(4) As String, DaSt1(4) As Date
Dim DaSu(4) As String, DaSu1(4) As Date, C As Range, Ma, Ma1
Myda = Date
cur_date = DateSerial(Year(Myda), Month(Myda), 1) '現在の月の初日
cur_eddate = DateSerial(Year(Myda), Month(Myda) + 1, 0) '現在の月の最後
Co = 1: Co1 = 1
For lp = 0 To DateDiff("d", cur_date, cur_eddate)
Select Case Weekday(Format(DateAdd("d", lp, cur_date), "yyyy/m/d"))
Case 7
DaSt(Co) = "第" & Co & "土曜日"
DaSt1(Co) = Format(DateAdd("d", lp, cur_date), "yyyy/m/d")
Co = Co + 1
Case 1
DaSu(Co1) = "第" & Co1 & "日曜日"
DaSu1(Co1) = Format(DateAdd("d", lp, cur_date), "yyyy/m/d")
Co1 = Co1 + 1
End Select
Next
For Each C In Range("A1", Range("A65536").End(xlUp))
Ma = Application.Match(C.Value, DaSt, 0)
If Not IsError(Ma) Then
C.Offset(, 1).Value = DaSt1(Ma - 1)
Else
Ma1 = Application.Match(C.Value, DaSu, 0)
If Not IsError(Ma1) Then
C.Offset(, 1).Value = DaSu1(Ma1 - 1)
End If
End If
Next
End Sub
|
|