从班次时间开始扣除30分钟

时间:2013-10-26 14:48:32

标签: excel-vba vba excel

你可以给我代码从换班时间(例如5:00:00)扣除“00:30:00”并存储在另一个变量中。 换档时间将从输入框获得。 添加给出正确答案(5:30:00),其中扣除给出0.528999等。

  If shin2 <> "" Then
  intime2 = TimeValue(shin2) + TimeValue("00:30:00")
  MsgBox intime2
  intime22 = TimeValue(shin2) - TimeValue("00:30:00")
  MsgBox intime22
  End If

亲切的问候

2 个答案:

答案 0 :(得分:1)

考虑:

Sub SHIFTTIME()
    Dim t As Date, s As String
    s = Application.InputBox(Prompt:="Enter time as hh:mm:ss", Type:=2)
    t = TimeValue(s) - TimeSerial(0, 30, 0)
    MsgBox t
End Sub

答案 1 :(得分:0)

我检查了你的代码,对我来说没问题。

Sub TimeValueTest()

Dim shin2 As String
Dim intime22 As Double, intime2 As Double


 shin2 = InputBox("Enter time in hh:mm:ss format")

 If shin2 <> "" Then
  intime2 = TimeValue(shin2) + TimeValue("00:30:00")

  Debug.Print "intime2"
  Debug.Print "value: " & intime2
  Debug.Print "time: " & Format(intime2, "hh:mm:ss")
  Debug.Print "----"

  intime22 = TimeValue(shin2) - TimeValue("00:30:00")

  Debug.Print "intime22"
  Debug.Print "value: " & intime22
  Debug.Print "time: " & Format(intime22, "hh:mm:ss")
  End If


End Sub

如果我在输入框中输入05:00:00,则输出以下内容。

intime2
value: 0.229166666666667
time: 05:30:00
----
intime22
value: 0.1875
time: 04:30:00

在引擎盖下,TimeValue将时间字符串转换为十进制数字,因此我怀疑您的奇怪结果可能与您的变量及其声明方式有关。