Userform时间格式问题

时间:2017-11-30 10:36:39

标签: excel-vba time format vba excel

好的,所以我一直在研究一个项目。它几乎完成了。但我一直在解决我无法解决的小问题。这次是格式化问题。

简短而简单: 我在sheet1(数据库)中有一个表格,我在userform中显示的信息(见图片)Sheet1 Userform 有几种方法可以在数据库中添加新行,您可以通过填充所有空文本框手动添加它,也可以双击现有行,文本框将自行填充。我的问题是当我双击现有的行,时间格式更改。看图像。 image2

我用这段代码解决了这个问题:

Private Sub Reg5_Change()
Reg5.Value = Format(Reg5.Value, "hh:mm")
End Sub

但是我手动的方式无法做到这一点。当我尝试输入时,我最终得到00:00并且无法更改它。

有没有办法解决这个问题,所以我可以使用这两种方法在数据库中添加新行?

其他问题: 我希望文本框ETA包含ETD + EET。 Image3

当ETD = 08:00且EET = 02:00时,我尝试了08:02的结果。似乎EET被添加为分钟。

Private Sub Reg7_AfterUpdate()
Reg7.Value = Reg5.Value + Reg6.Value
end sub

更新:

Private Sub Reg7_Change()
Dim etd As String: etd = Reg5.Value
Dim eet As String: eet = Reg6.Value

Dim detd As date
Dim deet As date

detd = TimeSerial(Split(etd, ":")(0), Split(etd, ":")(1), 0)
deet = TimeSerial(Split(eet, ":")(0), Split(eet, ":")(1), 0)
Reg7.Value = detd + deet
end sub

获取此错误Error 但正如您在图像中看到的那样,时间是正确的,而且该部分工作正常。

希望有人可以帮助我

1 个答案:

答案 0 :(得分:1)

关于“的部分我尝试了这个,结果是08:02,当ETD = 08:00,EET = 02:00。似乎EET被添加为分钟。

尝试使用TimeSerial()声明变量作为日期并将变量传递给它。 这是一个简单的例子:

Public Sub TestMe()

    Dim etd As String: etd = "08:00"
    Dim eet As String: eet = "02:00"

    Dim detd    As Date
    Dim deet    As Date

    detd = TimeSerial(Split(etd, ":")(0), Split(etd, ":")(1), 0)
    deet = TimeSerial(Split(eet, ":")(0), Split(eet, ":")(1), 0)

    Debug.Print detd + deet '10:00:00

End Sub