Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro beim Verlassen einer Zelle ausführen

Makro beim Verlassen einer Zelle ausführen
15.01.2017 20:44:16
Erich
Hallo,
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro beim Verlassen einer Zelle ausführen
15.01.2017 20:50:45
Hajo_Zi
Hallo Erich,
Private Sub worksheet_change(ByVal wahlzelle As Range)
wird nur ausgeführt bei Änderung. Wo ist das Problem?

AW: Makro beim Verlassen einer Zelle ausführen
15.01.2017 21:05:04
Erich
Hallo Hajo,
ich habe die Zellen grunsätzlich als Text formatiert - jetzt trage ich in die Zelle einen Wert ein und der wird beim Verlassen (zweites Makro) auf Zeit formatiert - damit kann ich dann rechnen.
Wenn ich jetzt eine neue Zeit drüber schreiben will, muss ich die Zelle vorher wieder auf Text formatieren - worksheet_selectionchange - damit ich die zeichenfolge "umbauen" kann...
Wenn aber jemand nur in die Zelle klickt und nichts reinschreibt, dann wird eine bestehende Zeit wieder zum Text weil das Makro schon bei der Auswahl läuft und die Berechnung funktioniert nicht mehr...
Das Problem macht also eigentlich das erste Makro...
...und die Textformatierung ins worksheet_change zu schreiben funktioniert auch nicht, weil das erst ausgeführt wird wenn die Zelle wieder verlassen wird....
LG,
Erich
Anzeige
AW: Makro beim Verlassen einer Zelle ausführen
15.01.2017 21:29:37
Erich
Im Zuge eines kleinen Wutanfalles habe ich gerade die Zeitformatierung und den "Textumbau" aus dem Makro entfernt und festgestellt, das die Berechnung der Zeiten über die Formel auch funktioniert, wenn die Zeiten als Text vorliegen und nicht wieder in Zeit umgewandelt wurden!
Offensichtlich habe ich da irgendo anders einen kleinen Fehler eingebaut der mir beim Anklicken ohne Änderung die Formelberechnung zerstört....
DANKE für deine Bemühungen - ich begebe mich auf Fehlersuche....
LG,
Erich
AW: Makro beim Verlassen einer Zelle ausführen
15.01.2017 21:44:10
Gerd
Hallo Erich,
ansonsten, falls das Zahlenformat "Zeit" bleiben soll:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim makrobereich As Range, objZelle As Range
Set makrobereich = Application.Intersect(Target, Range("h4:k14"))
If Not makrobereich Is Nothing Then
For Each objZelle In makrobereich
If Not objZelle.NumberFormat = "hh:mm" Then _
objZelle.NumberFormat = "@"
Next
End If
End Sub
Gruß Gerd
Anzeige
AW: Makro beim Verlassen einer Zelle ausführen
15.01.2017 22:00:34
Erich
DANKE!
..das funktioniert natürlich auch - ich glaube, ich denke schon wieder viel zu kompliziert...
Danke und LG,
Erich
AW: Makro beim Verlassen einer Zelle ausführen
16.01.2017 05:57:10
Hajo_Zi
Hallo Erich,
Private Sub worksheet_change(ByVal wahlzelle As Range)
wird nur ausgeführt bei Änderung. Wo ist das Problem?

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige