gpt4 book ai didi

vba - Excel:自动格式化时间的宏(没有日期)

转载 作者:行者123 更新时间:2023-12-04 03:17:24 24 4
gpt4 key购买 nike

我正在寻找一个简单的宏来将单元格指定为“时间”类型,并且仅键入数字(例如“955”)将格式化(并识别为)“hh:mm”时间。换句话说,通过键入“955”,单元格将解释为“09:55”,而我现在所能做的就是解释为“1902-08-12 00:00:00”(最有可能的是 955 1902-08-12 的天数)。

编辑:

部分需要是允许计算输入后的时间(例如,减去两个时间值以获得时间跨度,或添加多个时间跨度以获得总数)。

最佳答案

VBA代码:

Dim val As String
val = myCell.Value
Dim newval As String
If Len(val) = 2 Then
newval = "00:" & val
ElseIf Len(val) = 3 Then
newval = "0" & Left(val, 1) & ":" & Right(val, 2)
ElseIf Len(val) = 4 Then
newval = Left(val, 2) & ":" & Right(val, 2)
Else
newval = "Not a valid time"
End If
myCell.Value = newval

此代码不会检测最后两位数字是否为有效时间(大于 59 分钟),否则它应该可以处理大多数情况。

如果有人输入 1 位数字,您还需要添加大小写,即。午夜后 1 到 9 分钟。


如果您希望将其格式化为实际时间(日期时间类型),则将单元格的格式更改为 hh:mm。输入的值(例如 955)必须经过处理才能产生一天的一小部分。

伪代码:

(left(myCell,len(myCell)-2) + (right(myCell,2)/60)) / 24

这会为一天中的时间生成正确的小数值,因此将在单元格中以 hh:mm 格式显示为正确的“时间”。

关于vba - Excel:自动格式化时间的宏(没有日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2292117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com