時間格式有問題。Excel時間格式
我已經將單元格設置爲自定義格式00:00。
當前在A欄中輸入一個日期,可以是0300,它可以轉換爲03:00,這是完美的,或者您可以輸入03:00。
如果用戶輸入03我現在有一個問題; 00,因爲我需要它,可以顯示03:00
我如何能確保所有的時間都在HH:mm格式,而不是在HH;毫米等
這需要在輸入中自動更改列A中的任何內容,但標題(A1:A5)除外,但不應受此影響。
感謝
時間格式有問題。Excel時間格式
我已經將單元格設置爲自定義格式00:00。
當前在A欄中輸入一個日期,可以是0300,它可以轉換爲03:00,這是完美的,或者您可以輸入03:00。
如果用戶輸入03我現在有一個問題; 00,因爲我需要它,可以顯示03:00
我如何能確保所有的時間都在HH:mm格式,而不是在HH;毫米等
這需要在輸入中自動更改列A中的任何內容,但標題(A1:A5)除外,但不應受此影響。
感謝
這就是我所需要的。
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 =真 結束小組
感謝
在你的牀單改變事件中,你會放置以下代碼:
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中。如果它通過了條件,它將簡單地替換;
爲:
。
您好nbayly感謝您的評論。我已經嘗試過這一點,如果我按照預期輸入0302時間變爲03:02。如果我輸入03:02現在變成00:00這是不好的,如果我輸入03; 02它仍然是一樣的。我做錯了什麼? – jynxy
好吧即時靠近,[code] Private Sub Worksheet_Change(ByVal Target As Range) 如果Target.CountLarge = 1並且Target.Column = 1並且Target.Row> 5然後 Target.Value = Replace(Target.Value,「 ;「,」:「) End If End Sub [/ code]但是我必須刪除單元格格式,所以現在允許03:02並將03; 02轉換爲03:02但是現在我需要它當我輸入0302時,它將轉換爲03:02 – jynxy
這比您的原始問題要困難得多,主要是因爲直到您輸入值並且Excel重新格式化數字之前,事件纔會觸發。您是否將時間格式的A列中的單元格預設爲?您遇到的問題是Excel試圖解釋並重新格式化您的輸入,因此我不知道在Excel執行此操作之前找到手動輸入。也許將您的列設置爲文本並創建時間格式驗證,然後將該單元格格式設置爲時間。 – nbayly
據我所知,'的00自定義格式:00'將是無效的。你可能是指'hh:mm'?但如果您使用'hh:mm',則輸入「0300」將導致Excel在第300天(即1900年10月26日)顯示午夜時間。或者你使用了'00 \:00'的格式嗎?但'00 \:00'會導致「03:00」的輸入計算爲0.125(一天中的1/8)並顯示爲「00:00」。我擔心我很困惑。 – YowE3K
你爲什麼不用''替換';'並運行你所擁有的普通宏? – Niclas
對不起,我的意思是00 \:00這工作正常。 @niclas我目前沒有任何宏,我需要一個關於細胞的變化。我嘗試過,但不知道我在做什麼是對的。 – jynxy