将hhmmAM / PM(无空格)格式化为HH:MM AM / PM,如果没有input时间,则将单元格留空

我的问题涉及到2014年的一个问题:“ 如何将hhmmAM / PM(无空间)格式化为时间h:mm AM / PM in excel? ”

加里的学生build议的代码确实有效。 但是,如果没有时间input到目标单元格中​​,则代码input“:PM”并导致#VALUE! 单元格中包含工作簿中其他位置的计算错误。

有什么我可以添加到下面的代码来说,如果Target.Value =“:PM”保持空白? 谢谢。

Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub Application.EnableEvents = False s = Target.Text If Right(s, 1) = "a" Or Right(s, 1) = "A" Then s2 = " AM" Else s2 = " PM" End If Target.Value = Left(s, 2) & ":" & Mid(s, 3, 2) & s2 Application.EnableEvents = True 

结束小组

 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub Application.EnableEvents = False s = Target.Text If Trim(s) <> "" Then If Right(s, 1) = "a" Or Right(s, 1) = "A" Then s2 = " AM" Else s2 = " PM" End If Target.Value = Left(s, 2) & ":" & Mid(s, 3, 2) & s2 End If Application.EnableEvents = True End Sub 

现在它只会改变单元格,如果它有文本。

Application.EnableEvents = False line之前抛出

 if Len(Trim(Target.text))=0 then exit sub 

或使用相交线添加它。