第1土曜日と第3土曜日を特定する VBA
汎用性あるのか、微妙なためUPするか迷いましたが
自分用のメモとしてUPします。
休業日のレコードを自動生成するコードは作成しましたが
第1土曜日と第3土曜日を特定できず、下記のコードを作成しました。
これで、前回作成したタイマーと組み合わせて、特定の土曜日のみ
自動で実行したい処理が出来そうです。
休日_テーブル
列の「休日」休業日の日付
列の「種類」
・ 1は土曜日
・ 2は日曜日
・ 3~6は祭日等
として、同じ年月で、 土曜日のみ番号を振るります。
これで、第1土曜日と第3土曜日を特定できます。
Sub 番号を振る()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSql As String
Dim currentHoliday As String
Dim counter As Integer
Set db = CurrentDb()
' 種類が2で、休日の左7文字でソートされたレコードセットを選択
strSql = "SELECT * FROM 休日_テーブル WHERE 種類 = 1 ORDER BY Left(休日, 7), 休日"
Set rs = db.OpenRecordset(strSql, dbOpenDynaset)
If Not rs.EOF Then
rs.MoveFirst
currentHoliday = Left(rs!休日, 7)
counter = 1
Do While Not rs.EOF
If Left(rs!休日, 7) = currentHoliday Then
' 同じ休日のレコードに対して番号を振る
rs.Edit
rs!土曜日 = counter
rs.Update
counter = counter + 1
Else
' 新しい休日が始まった場合、カウンターをリセット
currentHoliday = Left(rs!休日, 7)
counter = 1
rs.Edit
rs!土曜日 = counter
rs.Update
counter = counter + 1
End If
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub