好的,所以我一直在研究一个项目。它几乎完成了。但我一直在解决我无法解决的小问题。这次是格式化问题。
简短而简单: 我在sheet1(数据库)中有一个表格,我在userform中显示的信息(见图片) 有几种方法可以在数据库中添加新行,您可以通过填充所有空文本框手动添加它,也可以双击现有行,文本框将自行填充。我的问题是当我双击现有的行,时间格式更改。看图像。
我用这段代码解决了这个问题:
Private Sub Reg5_Change()
Reg5.Value = Format(Reg5.Value, "hh:mm")
End Sub
但是我手动的方式无法做到这一点。当我尝试输入时,我最终得到00:00并且无法更改它。
有没有办法解决这个问题,所以我可以使用这两种方法在数据库中添加新行?
其他问题: 我希望文本框ETA包含ETD + EET。
当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
获取此错误 但正如您在图像中看到的那样,时间是正确的,而且该部分工作正常。
希望有人可以帮助我
答案 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