VBA 時間の抜き出しが上手く処理できない
時間の抜き出しをするのに下記のコードを候補に挙げましたが、
「'コロンが2個の場合 (時:分:秒)」の場合は上手く処理できますが
「'コロンが1個の場合 (分:秒)」の数値が上手く処理できません。
’-----------------------------------------------------------------------
Option Explicit
Sub コロンの数を数える()
Dim i As Long, cnt As Long, n As Variant
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
cnt = 0 '←cntをリセット
Do
n = InStr(n + 1, Cells(i, "A"), ":")
If n = 0 Then
Exit Do
Else
cnt = cnt + 1
End If
Loop
If cnt < 1 Then
MsgBox "[:]がありません。" '←cntが1未満のときにメッセージを発出します。
End
Else
Cells(i, "B").Value = cnt
End If
Next
End Sub
Sub 時間抜き出し()
Dim i As Long, cnt As Long
Dim n As Single
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
n = InStr(n + 1, Cells(i, "A"), ":") 'コロン「:」の位置を特定する
If Cells(i, "B") = 1 Then 'コロンが1個の場合 (分:秒)
Cells(i, "C").NumberFormatLocal = "h:mm:ss"
If Mid(Cells(i, "A"), n - 2, 1) = " " Or Mid(Cells(i, "A"), n - 2, 1) = "(" Then '10分以下の場合
Cells(i, "C") = Mid(Cells(i, "A"), n - 1, 4)
Cells(i, "C") = "0:" & Cells(i, "C")
Else '10分以上
Cells(i, "C") = Mid(Cells(i, "A"), n - 2, 5)
Cells(i, "C") = "0:" & Cells(i, "C")
End If
Else 'コロンが2個の場合 (時:分:秒)
Cells(i, "C").NumberFormatLocal = "h:mm:ss"
Cells(i, "c") = Mid(Cells(i, "A"), n - 1, 7)
End If
n = 0
Next
End Sub
お礼
開始位置を調整して、"GN= "のスペースを抜くことでできました。 ありがとうございました!!