|
こんなかな?
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文字程度のプリフィックスを付けた方が無難です
(使いたい変数名は、大抵が予約名です)
|
|