Makro beim Verlassen einer Zelle ausführen
15.01.2017 20:44:16
Erich
ich habe folgendes Problem:
Ich möchte einer Zelle in einem bestimmten Bereich beim Auswählen ein bestimmtes Format (Text) zuweisen - das habe ich hinbekommen:
Private Sub worksheet_selectionchange(ByVal wahlzelle As Range)
Dim makrobereich As Range
Set makrobereich = Range("h4:k14")
If Not Application.Intersect(makrobereich, Range(wahlzelle.Address)) Is Nothing Then
wahlzelle.NumberFormat = "@"
End If
End Sub
Wenn in der Zelle eine Änderung vorgenommen (ein Wert eingetragen) wurde, soll das Format beim Verlassen der Zelle von Text auf Zeit geändert werden - das funktioniert auch:
Private Sub worksheet_change(ByVal wahlzelle As Range)
Dim makrobereich As Range
Set makrobereich = Range("h4:k14")
If Not Application.Intersect(makrobereich, Range(wahlzelle.Address)) Is Nothing Then
wahlzelle.NumberFormat = "hh:mm"
End If
End Sub
Das erste Makro hat nur ein kleines Problem aufgeworfen: Wenn die Zelle nur ausgewählt und nichts geändert wird, soll kein Makro ausgeführt bzw. das Format nicht verändert werden! (damit bereits eingetragene "Zeiten" nicht wieder Text werden)
Deshalb die Frage, ob es eine Möglichkeit gibt, ein Makro erst auszufühern wenn in die Zelle tatsächlich geschrieben wird?
Die ganze Baustelle soll dazu dienen eine deppensichere Zeiteingabe (ein-, zwei-, drei- und vierstellig) in die Tabelle zu ermöglichen.
z.B.: 1400 ergibt 14:00, 14 ergibt 14:00, 140 ergibt 01:40, 3 ergibt 03:00 usw....
die Formeln dazu habe ich schon - nur an der Formatierung scheitert´s....
mfg,
Erich