時間がジャストかどうかを調べる

<分類:判定>
<使用例:時間が何時ジャストであるか判定する>
<00:00:00 → 判定結果:ジャスト>
<00:00:01 → 判定結果:ジャストではない>
<23:00:00 → 判定結果:ジャスト>
<23:30:00 → 判定結果:ジャストではない>
<23:00:30 → 判定結果:ジャストではない>
<プログラム例>

Sub 使用例()
    Dim t As String
    Dim s As String
    
    t = "00:00:00"
    s = 時間ジャスト調査(t)

    If s = "*" Then
       MsgBox (t & "はジャストです")
    Else
       MsgBox (t & "はジャストではありません")
    End If

    t = "00:00:01"
    s = 時間ジャスト調査(t)

    If s = "*" Then
       MsgBox (t & "はジャストです")
    Else
       MsgBox (t & "はジャストではありません")
    End If

    t = "23:00:00"
    s = 時間ジャスト調査(t)

    If s = "*" Then
       MsgBox (t & "はジャストです")
    Else
       MsgBox (t & "はジャストではありません")
    End If

    t = "23:30:00"
    s = 時間ジャスト調査(t)

    If s = "*" Then
       MsgBox (t & "はジャストです")
    Else
       MsgBox (t & "はジャストではありません")
    End If

    t = "23:00:30"
    s = 時間ジャスト調査(t)

    If s = "*" Then
       MsgBox (t & "はジャストです")
    Else
       MsgBox (t & "はジャストではありません")
    End If

End Sub

Function 時間ジャスト調査(p1 As String)
    Dim s As String
    
    s = 共通_cov_time_t9(p1)
    Select Case Mid(s, 4, 4)
           Case "0000"
               時間ジャスト調査 = "*"
           Case else
               時間ジャスト調査 = ""
    End Select

End Function

Function 共通_cov_time_t9(p1 As String) As String
    共通_cov_time_t9 = "T" & CStr((Format(p1, "hhnnss")))
End Function

時間を数字の羅列に変換する

<分類:値変換>
<使用例:時間をT+数字羅列の時間に変換する 00:01:02 → T000102>
<なぜTをつけるか?先頭0の時が数字として変換されてしまうのであえてTをつけて完全文字列となるようにする>
<プログラム例>

Sub 使用例()
    Dim t As String
    Dim s As String
    
    t = "00:01:02"
    s = 共通_cov_time_t9(t)

    If s <> "" Then
       MsgBox (t & "を " & s & " に変換しました")
    End If
End Sub

Function 共通_cov_time_t9(p1 As String) As String
    共通_cov_time_t9 = "T" & CStr((Format(p1, "hhnnss")))
End Function

文字列の日付から当月第何週目の何曜日かを表示する

<分類:値変換>
<使用例:文字列の日付(20190324)から当月第何週目の何曜日か(日5)を表示する>
<プログラム例>

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
   Dim yobi2 As String
   Dim flg1 As Long
   Dim flg2 As Long

   date_moji = p1
   rtn1 = 共通_文字列の日付から末日(date_moji)
   rtn2 = 共通_cov_date_d9(rtn1)
   imax = rtn2
   i01 = Left(rtn2, 6) & "01"
   
   yobi = 共通_文字列の日付から曜日(p1)
   yobi_cnt = 0
   flg1 = 0
   flg2 = 0
   
   For i = i01 To imax
      s = i
      yobi2 = 共通_文字列の日付から曜日(s)
      
      If flg1 = 0 And yobi2 = "土" Then
         flg1 = 1
      End If
      
      If yobi2 = yobi Then
         If s <= p1 Then
            
            If yobi2 <> "土" And flg2 = 0 And flg1 = 1 Then
               yobi_cnt = yobi_cnt + 1
            End If
            
            yobi_cnt = yobi_cnt + 1
            flg2 = 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