HERBERS Excel-Forum - das Archiv
Uhrzeit mit komma
Ralf

Hallo
Hatte gestern schon mal danach gefragt und zwar möchte ich gerne wenn ich 8,15 in eine zelle eingebe das dann dort 8:15 steht habe auch reichlich antworten gefunden
es geht natürlich mit autokorrektur aber mir würde die Lösung von Hajo am besten gefallen nur das problem ist jetzt nur hajo sein mako bedeutet 1630 = 16:30 ich möchte gerne16,30 = 16:30 uhrzeit aber ich habe keinen blassen schimmer was ich da im Makro ändern muß und ob das überhaupt geht vielleich kann mir von euch einer helfen
mit besten grüßen ralf
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'   Erstellt von Hajo.Ziplies@web.de am 28.12.02
Dim RaBereich As Range, RaZelle As Range
Dim InS As Integer
Dim InM As Integer
' Bereich der Wirksamkeit
Set RaBereich = Range("B3:C20, D1:D7")
'    ActiveSheet.Unprotect
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
With RaZelle
If .Value <> "" Then
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And _
InStr(.Value, ",") = 0 Then
.NumberFormat = "[hh]:mm"
If Len(Target.Value) > 2 Then
InS = Left(.Value, Len(.Value) - 2)
InM = Right(.Value, 2)
Else
'                            Stunden haben das Primat
'                             InS = .Value
'                             InM = 0
'                            Minuten haben das Primat
InS = 0
InM = .Value
End If
.Value = InS & ":" & InM
End If
End If
End With
End If
Next RaZelle
'    ActiveSheet.protect
Application.EnableEvents = True
End Sub

AW: Uhrzeit mit komma
hary

Hallo ralf
teste mal. Habe zeichen = in > gewechselt.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'   Erstellt von Hajo.Ziplies@web.de am 28.12.02
Dim RaBereich As Range, RaZelle As Range
Dim InS As Integer
Dim InM As Integer
' Bereich der Wirksamkeit
Set RaBereich = Range("B3:C20, D1:D7")
'    ActiveSheet.Unprotect
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
With RaZelle
If .Value <> "" Then
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And _
InStr(.Value, ",") > 0 Then  'hier geaendert
.NumberFormat = "[hh]:mm"
If Len(Target.Value) > 2 Then
InS = Left(.Value, Len(.Value) - 2)
InM = Right(.Value, 2)
Else
'                            Stunden haben das Primat
'                             InS = .Value
'                             InM = 0
'                            Minuten haben das Primat
InS = 0
InM = .Value
End If
.Value = InS & ":" & InM
End If
End If
End With
End If
Next RaZelle
'    ActiveSheet.protect
Application.EnableEvents = True
End Sub

gruss hary
AW: Uhrzeit mit komma
Ralf

Jau das passt aber mir ist aufgefallen, das man wohl 16,15 = 16:15 eingeben kann nur bei 17,30 = 17:00 woran kann das liegen
gruß Ralf
AW: Uhrzeit mit komma
tommy

Tipp:
mach in der Gleichung =1 statt größer 0
Gruß!
AW: Uhrzeit mit komma
Hajo_Zi

Hallo Ralf,
in einen Forum sollte man mit einer Frage keine Person persölkich anreden, ein Hinwis vom wem der Code wäre nicht schlecht im Betreff. Ich wurde jetzt erst drauf hingewiesen.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'* H. Ziplies                                     *
'* 29.12.09                                       *
'* erstellt von HajoZiplies@WEB.de                *
'* http://Hajo-Excel.de
Dim RaBereich As Range, RaZelle As Range
Dim InS As Integer
Dim InM As Integer
' Bereich der Wirksamkeit
Set RaBereich = Range("B3:C20, D1:D7")
'ActiveSheet.Unprotect
Application.EnableEvents = False
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
For Each RaZelle In Range(Target.Address)
With RaZelle
If .Value <> "" Then
If IsNumeric(.Value) And InStr(.Value, ":") = 0 Then
.NumberFormat = "[hh]:mm"
If InStr(RaZelle, ",") > 0 Then
InS = Left(RaZelle, InStr(RaZelle, ",") - 1)
InM = Mid(RaZelle, InStr(RaZelle, ",") + 1)
Else
InS = RaZelle
End If
.Value = InS & ":" & InM
End If
End If
End With
Next RaZelle
End If
'ActiveSheet.protect
Application.EnableEvents = True
Set RaBereich = Nothing
End Sub


AW: Uhrzeit mit komma
BoskoBiati

Hallo Hajo,
Dein Makro bringt einen Fehler, wenn man Uhrzeiten mit vollen 10Minuten eingibt. aus z.B 16,30 wird 16:03. Hier mal eine Änderung (beruhend auf dem alten Code):

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'   Erstellt von Hajo.Ziplies@web.de am 28.12.02
Dim RaBereich As Range, RaZelle As Range
Dim InS As Integer
Dim InM As Integer
' Bereich der Wirksamkeit
Set RaBereich = Range("B3:C20, D1:D7")
'    ActiveSheet.Unprotect
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
With RaZelle
If .Value <> "" Then
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And _
InStr(.Value, ",") <> 0 Then
If Len(Target.Value) > 2 Then
InS = Left(.Value, Len(.Value) - 2)
InM = Mid(.Value, InStr(1, .Value, ",") + 1, Len(.Value) - Len( _
InS) - 1)
If Len(Trim(InM)) < 2 Then InM = InM * 10
Else
'                            Stunden haben das Primat
InS = .Value
InM = 0
'                            Minuten haben das Primat
'                            InS = 0
'                            InM = .Value
End If
.NumberFormat = "[hh]:mm"
.Value = InS & ":" & InM
End If
End If
End With
End If
Next RaZelle
'    ActiveSheet.protect
Application.EnableEvents = True
End Sub
Gruß
Bosko
AW: Uhrzeit mit komma
Hajo_Zi

Hallo Bosko,
ich habe den alten Code angepast.
  • Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    '* H. Ziplies                                     *
    '* 29.12.09                                       *
    '* erstellt von HajoZiplies@WEB.de                *
    '* http://Hajo-Excel.de
    Dim RaBereich As Range, RaZelle As Range
    Dim InS As Integer
    Dim InM As Integer
    ' Bereich der Wirksamkeit
    Set RaBereich = Range("B3:C20, D1:D7")
    'ActiveSheet.Unprotect
    Application.EnableEvents = False
    Set RaBereich = Intersect(RaBereich, Range(Target.Address))
    If Not RaBereich Is Nothing Then
    For Each RaZelle In Range(Target.Address)
    With RaZelle
    If .Value <> "" Then
    If IsNumeric(.Value) And InStr(.Value, ":") = 0 Then
    .NumberFormat = "[hh]:mm"
    If InStr(RaZelle, ",") > 0 Then
    InS = Left(RaZelle, InStr(RaZelle, ",") - 1)
    InM = Left(Mid(RaZelle & "0", InStr(RaZelle, ",") + 1), 2)
    Else
    InS = RaZelle
    End If
    .Value = InS & ":" & InM
    End If
    End If
    End With
    Next RaZelle
    End If
    'ActiveSheet.protect
    Application.EnableEvents = True
    Set RaBereich = Nothing
    End Sub
    


  • Gruß Hajo
    AW: Danke
    hary

    Moin Ihr Beiden
    Jetzt wo ich's sehe. So in etwa hatte ich es auch, hatte nur ein paar entscheidene Buchstaben nicht eingebaut ;-(
    Gruss hary
    AW: Danke
    Ralf

    Hallo
    und danke für eure Antworten und anregungen in sachen forumverhalten
    Mit besten grüßen ralf