文字列の日付から当月何回目の何曜日かを表示する
<分類:値変換>
<使用例:文字列の日付(20190324)から当月何回目の何曜日か(日4)を表示する>
<プログラム例>
Sub 使用例() Dim date_moji As String Dim rtn1 As String date_moji = "20190324" rtn1 = 共通_文字列の日付から当月何回目の何曜日(date_moji) MsgBox ("文字列の日付(" & date_moji & ")は当月" & Right(rtn1, 1) & "回目の" & Left(rtn1, 1) & "曜日です") End Sub Function 共通_文字列の日付から当月何回目の何曜日(p1 As String) As String Dim date_moji As String Dim rtn1 As String Dim rtn2 As String Dim imax As Long Dim i01 As Long Dim i As Long Dim yobi As String Dim yobi_cnt As Long Dim s As String date_moji = p1 rtn1 = 共通_文字列の日付から末日(date_moji) rtn2 = 共通_cov_date_d9(rtn1) imax = rtn2 i01 = Left(rtn2, 6) & "01" yobi = 共通_文字列の日付から曜日(p1) yobi_cnt = 0 For i = i01 To imax s = i If 共通_文字列の日付から曜日(s) = yobi Then If s <= p1 Then yobi_cnt = yobi_cnt + 1 Else Exit For End If End If Next i 共通_文字列の日付から当月何回目の何曜日 = yobi & yobi_cnt End Function Function 共通_文字列の日付から末日(p1 As String) As Date Dim date_moji2 As String Dim rtn_date As Date Dim rtn_date2 As Date Dim rtn_date3 As Date date_moji2 = Left(p1, 6) & "01" rtn_date = 共通_cov_date_9d(date_moji2) rtn_date2 = DateAdd("m", 1, rtn_date) rtn_date3 = DateAdd("d", -1, rtn_date2) 共通_文字列の日付から末日 = rtn_date3 End Function Function 共通_文字列の日付から曜日(date_moji As String) As String Select Case Weekday(共通_cov_date_9d(date_moji)) Case "1" 共通_文字列の日付から曜日 = "日" Case "2" 共通_文字列の日付から曜日 = "月" Case "3" 共通_文字列の日付から曜日 = "火" Case "4" 共通_文字列の日付から曜日 = "水" Case "5" 共通_文字列の日付から曜日 = "木" Case "6" 共通_文字列の日付から曜日 = "金" Case "7" 共通_文字列の日付から曜日 = "土" End Select End Function Function 共通_cov_date_9d(p1 As String) As Date Dim d As Date d = Left(p1, 4) & "/" & Mid(p1, 5, 2) & "/" & Right(p1, 2) 共通_cov_date_9d = (Format(d, "yyyy/mm/dd")) End Function Function 共通_cov_date_d9(p1 As String) As String 共通_cov_date_d9 = CStr((Format(p1, "yyyymmdd"))) End Function