| 
    
     |  | こんなかな? 
 Sub Test()
 
 Dim strTime As String
 Dim dtmTime As Date
 Dim dtmResult As Date
 
 strTime = InputBox("時刻を入力してください。hh.mm.ss", "時刻入力")
 If strTime <> "" Then
 If IsDate(strTime) Then
 dtmTime = TimeValue(strTime)
 dtmResult = dtmTime - #12:10:00 AM#
 If dtmResult < 0 Then        '★追加
 dtmResult = dtmResult + 1    '★追加
 End If               '★追加
 With Sheets("Sheet1")
 With .Range("B1")
 .NumberFormatLocal = "hh.mm.ss"
 .Value = dtmTime
 End With
 .Range("B2").Value = Hour(dtmResult)
 .Range("B3").Value = Minute(dtmResult)
 .Range("B4").Value = Second(dtmResult)
 With .Range("B5")
 .NumberFormatLocal = "hh.mm.ss"
 .Value = dtmResult
 End With
 End With
 Else
 MsgBox "時刻が入力されませんでした。最初からやり直してください"
 Exit Sub
 End If
 End If
 
 End Sub
 
 PS:
 余談ですが、
 質問時のコードでtimeと言う変数名を使っていますが、VBAにTimeと言うステートメント、関数が有ります
 因って、予約名と言って本来は使わない、使え無い名前です
 今回、Dimで変数宣言されているから変数として動いている様ですが、此れで変数宣言されていないで
 
 Time = InputBox("時刻を入力してください。hh.mm.ss", "時刻入力")
 
 等とすると、Systemの時間が変更されてしまいます
 こう言う事とを回避する為に、成るべく変数名に頭3文字程度のプリフィックスを付けた方が無難です
 (使いたい変数名は、大抵が予約名です)
 
 |  |