为了允许快速输入,我有一个自定义格式
0":"00
因此,输入 516 将导致 5:16。这工作正常,但我想添加它是在上午还是下午。
我尝试将AM/PM添加到此自定义格式的末尾
0":00 上午/下午
因此,理想情况下,如果在 PM 中填充单元格,它将显示为下午 5:16。 不幸的是,无论输入什么时间,它都只显示 AM。
有谁知道我如何获得此功能?也许自定义格式不是我正在寻找的选项?
假设我们在 A 列中输入值。 如果我们输入:
516
在 A1 中,当我们输入时是早上,我们希望 Excel 将值转换为:
5:16 AM
如果输入时是下午,我们希望该值转换为5:16 PM
将以下事件宏放在工作表代码区域中:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim trail As String, v As String
With Target
If Intersect(Range("A:A"), Target) Is Nothing Then Exit Sub
If .Value = "" Then
Application.EnableEvents = False
.Clear
Application.EnableEvents = True
Exit Sub
End If
trail = Right(CStr(Now()), 2)
v = .Text
mins = Right(v, 2)
hrs = Mid(v, 1, Len(v) - 2)
If trail = "PM" Then hrs = hrs + 12
Application.EnableEvents = False
.Clear
.Value = TimeSerial(hrs, mins, 0)
.NumberFormat = "[$-en-US]h:mm AM/PM;@"
Application.EnableEvents = True
End With
End Sub
这将生成具有正确格式的真实 Excel 时间值。