时间格式化问题。
我已将单元格设置为自定义格式00:00。
目前在A栏中输入日期,这可以是0300,转换为03:00,这是完美的,或者你可以输入03:00。
如果用户输入03; 00,我现在有一个问题,因为我需要这个来显示03:00
我怎样才能确保所有时间都是hh:mm格式而不是hh; mm等。
除了标题(A1:A5)之外,这需要自动更改A列中任何内容的输入,但这不应受到影响。
由于
答案 0 :(得分:0)
在工作表更改事件中,您将放置以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge = 1 And Target.Column = 1 And Target.Row > 5 Then
Target.Value2 = Replace(Target.Value2, ";", ":")
End If
End Sub
解释代码......它首先检查以确保更改不在多个单元格上(即粘贴),并且更改位于第5行下面的列A.如果它确实通过了条件,它只是替换{ {1}} ;
。
答案 1 :(得分:0)
这就是我所需要的。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim xStr As String
Dim xVal As String
Set rng1 = Range("A:A")
Set rng2 = Range("C:C")
Set rng3 = Range("I:I")
On Error GoTo EndMacro
If Application.Intersect(Target, Union(rng1, rng2, rng3)) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Target.Row < 5 Then Exit Sub
Application.EnableEvents = False
With Target
If Not .HasFormula Then
Target.Value = Replace(Target.Value, ";", ":")
Target.Value = Left(Target.Value, 5)
xVal = .Value
Select Case Len(xVal)
Case 1 ' e.g., 1 = 00:01 AM
xStr = "00:0" & xVal
Case 2 ' e.g., 12 = 00:12 AM
xStr = "00:" & xVal
Case 3 ' e.g., 735 = 07:35 AM
xStr = "0" & Left(xVal, 1) & ":" & Right(xVal, 2)
Case 4 ' e.g., 1234 = 12:34
xStr = Left(xVal, 2) & ":" & Right(xVal, 2)
Case 5 ' e.g., 12:45 = 12:45
xStr = Left(xVal, 2) & Mid(xVal, 2, 1) & Right(xVal, 2)
Case Else
Err.Raise 0
End Select
.Value = Format(TimeValue(xStr), "hh:mm")
End If
End With
Application.EnableEvents = True
Exit Sub
EndMacro: Application.EnableEvents = True 结束子
由于