ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   please help.is it possible re-edit macro to convert text like1530-2200 to time format automatically? i got macro which works with 4 digits (https://www.excelbanter.com/excel-discussion-misc-queries/449723-please-help-possible-re-edit-macro-convert-text-like1530-2200-time-format-automatically-i-got-macro-works-4-digits.html)

[email protected]

please help.is it possible re-edit macro to convert text like1530-2200 to time format automatically? i got macro which works with 4 digits
 
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim TimeStr As String

On Error GoTo EndMacro
If Application.Intersect(Target, Range("A1:A10")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If

Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Value)
Case 1 ' e.g., 1 = 00:01 AM
TimeStr = "00:0" & .Value
Case 2 ' e.g., 12 = 00:12 AM
TimeStr = "00:" & .Value
Case 3 ' e.g., 735 = 7:35 AM
TimeStr = Left(.Value, 1) & ":" & _
Right(.Value, 2)
Case 4 ' e.g., 1234 = 12:34
TimeStr = Left(.Value, 2) & ":" & _
Right(.Value, 2)
Case 5 ' e.g., 12345 = 1:23:45 NOT 12:03:45
TimeStr = Left(.Value, 1) & ":" & _
Mid(.Value, 2, 2) & ":" & Right(.Value, 2)
Case 6 ' e.g., 123456 = 12:34:56
TimeStr = Left(.Value, 2) & ":" & _
Mid(.Value, 3, 2) & ":" & Right(.Value, 2)
Case Else
Err.Raise 0
End Select
..Value = TimeValue(TimeStr)
End If
End With
Application.EnableEvents = True
Exit Sub
EndMacro:
MsgBox "You did not enter a valid time"
Application.EnableEvents = True
End Sub

Claus Busch

please help.is it possible re-edit macro to convert text like 1530-2200 to time format automatically? i got macro which works with 4 digits like 1234 to 12:34 ,but i don't know how to make it work for 4 digits dash and 4 digits?
 
Hi Michael,

Am Wed, 22 Jan 2014 05:29:30 -0800 (PST) schrieb :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim TimeStr As String


try:

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("A1:A10")) Is Nothing _
Or Target.Count 1 Then Exit Sub

Dim myTime As Double

Application.EnableEvents = False
Select Case Len(Target)
Case 1, 2
myTime = Target / 1440
Case 3
myTime = Left(Target, 1) / 24 + Right(Target, 2) / 1440
Case 4
myTime = Left(Target, 2) / 24 + Right(Target, 2) / 1440
Case 5
myTime = Left(Target, 1) / 24 + Mid(Target, 2, 2) / 1440 + _
Right(Target, 2) / 86400
Case 6
myTime = Left(Target, 2) / 24 + Mid(Target, 3, 2) / 1440 + _
Right(Target, 2) / 86400
Case Is 6
myTime = 0
End Select
If myTime 0 Then
Target = myTime
Target.NumberFormat = "h:mm:ss"
Else
Target.Clear
Target.NumberFormat = "General"
MsgBox "You did not enter a valid time"
End If
Application.EnableEvents = True
End Sub


Regards
Claus B.
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2


All times are GMT +1. The time now is 05:24 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com