Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Range um eine Einzelzelle erweiternerweitern

Forumthread: Range um eine Einzelzelle erweiternerweitern

Range um eine Einzelzelle erweiternerweitern
04.10.2025 17:35:03
mike49
Hallo Leute,
ich habe dieses Makro, bei dem ich die Zeit ohne Eingabe des Doppelpunktes im Bereich C5:H35 eingeben kann. Das funktioniert auch bestens.
Jetzt würde ich gerne den Bereich um die Einzelzelle P38 erweitern. Leider weiß ich, nicht wie das Makro geändert werden muss! 😉

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Eingabe As Variant

On Error GoTo ErrorHandler
If Not Intersect(Target, Range("C5:H35")) Is Nothing Then
Application.EnableEvents = False
With Target
.Value = CDate(Left(Format(Target, "0000"), 2) & ":" & Right(Target, 2))
.NumberFormat = "[hh]:mm"
End With
End If
ErrorHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Danke für die Hilfe
Gruß
mike49
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range um eine Einzelzelle erweiternerweitern
04.10.2025 18:08:29
RPP63
Moin!
Du musst doch nur den Range erweitern, was man ja auch mit dem Rekorder aufzeichnen kann.
Starte ihn und markiere bei gedrückter Strg-Taste die beiden Bereiche.
If Not Intersect(Target, Range("C5:H35,P38")) Is Nothing Then


Gruß Ralf
Anzeige
AW: Range um eine Einzelzelle erweiternerweitern
04.10.2025 18:10:11
Uduuh
Hallo,
If Not Intersect(Target, Range("C5:H35, P38")) Is Nothing Then


Gruß aus'm Pott
Udo
AW: Range um eine Einzelzelle erweiternerweitern
05.10.2025 12:56:46
Marc
Hallo erstmal muss vor



ErrorHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub


ein Exit Sub, denn sonst wird der Code immer ausgeführt... egal ob Error oder nicht
Anzeige
AW: Range um eine Einzelzelle erweiternerweitern
05.10.2025 15:44:06
GerdL
Hallo Mike!
Private Sub Worksheet_Change(ByVal Target As Range)


On Error GoTo ErrorHandler
Application.ScreenUpdating = False

With Target
If .CountLarge = 1 Then
If Not Intersect(.Cells, Range("C5:H35,P38")) Is Nothing Then
Application.EnableEvents = False
.Value = CDate(Left(Format(.Value, "0000"), 2) & ":" & Right(.Value, 2))
.NumberFormat = "[hh]:mm"
End If
End If
End With
ErrorHandler:
If Err.Number > 0 Then Err.Clear
Application.EnableEvents = True

End Sub

Gruß Gerd
Anzeige
Der Krux mit dem Doppelpunkt...
06.10.2025 22:28:53
Yal
Hallo Mike,

wenn auch sehr spät dran:

um die lästige Eingabe der Doppelpunkt bei Uhrzeiten umzugehen, kannst Du in der Autokorrektur eintragen, dass 2 nacheinander vorkommenden Kommas in einem Doppelpunkt korrigiert wird.

Aus getippte 20,,30 wird 20:30.
Ganz ohne Makro und xlsm-Datei und Bestätigung, weil Gefahr usw ...

VG
Yal
Anzeige
No sir!
05.10.2025 13:02:47
RPP63
Hmmmh!
Zitat:
"denn sonst wird der Code immer ausgeführt... egal ob Error oder nicht"
Das soll (besser: muss) er ja auch.
.EnableEvents ist (im Ggs. zu .ScreenUpdating) nicht flüchtig.
Deshalb: Der Errorhandle bewirkt, dass auch bei einem Abflug die Events eingeschaltet bleiben.

Gruß Ralf
Anzeige
AW: No sir!
05.10.2025 14:57:56
Marc
Ja eben, wenn ein Abflug passiert, soll das ErrorHandle greifen..

Wenn alles richtig läuft, braucht es das ErrorHandle nicht, also muss es nicht ausgeführt werden, daher braucht es bei einem normalen Ablauf nicht ausgeführt werden.
Soll der Inhalt von ErrorHandle auch bei normalen Ablauf ausgeführt werden, muss es vor ErrorHandle implementiert werden.

nach meinem Verständnis vermischt sich hier eine verpflichtende Codeausführung mit einer Exception Behandlung.. , das sollte getrennt werden, in meiner kleinen unwichtigen Meinung nach.
Anzeige
AW: No sir!
05.10.2025 15:44:16
RPP63
OK, noch einmal:
Wenn Du beim Code vor der Sprungmarke ein Exit Sub einfügst, bleiben die Events ausgeschaltet, wenn kein Fehler auftritt.
Das kann kaum im Sinne des Entwicklers sein.
Entweder man schaltet es redundant vor Deinem Exit Sub wieder ein oder man belässt alles wie es ist.
:)
Anzeige
AW: No sir!
05.10.2025 15:08:43
Marc
So sehen z.B. bei mir Exception Handle aus, für alle meine Subs (strikt getrennt vom Inhalt der verpflichtenden Code Ausführung).
So kann man viel effektiver kontrollieren, läuft alles hier nach Maß oder nicht (im obigen Bespiel, kann man nicht wissen, gab es einen Fehler oder nicht, und wenn ja, was für ein Fehler lag vor)

Gerade wenn ich mit mehreren verschiedenen ErrorHandle arbeite , muss ich dringend mit Exit Sub arbeiten (hier Datenbank mit Transaktionen, wie Update, DELETE, Insert, oder Nur reine Datenbankabfrage, oder einfache VBA Fehler




On Error GoTo 0
Exit Sub

DBFehlerTrans:
Fehler = Err.Description
DBcon.RollbackTrans
DBcon.Close
Call Error_Doku(Modul, Fehler)
MsgBox "Es ist bei der Datenübertragung folgender Fehler aufgetaucht: " & vbNewLine & Fehler & vbNewLine & ". Daten wurden nicht übergeben, bitte erneut versuchen.", vbOKOnly
Exit Sub
DBFehler:
Fehler = Err.Description
DBcon.Close
Call Error_Doku(Modul, Fehler)
MsgBox "Es ist bei der Datenabfrage folgender Fehler aufgetaucht: " & vbNewLine & Fehler & vbNewLine & ". Daten wurden nicht übergeben, bitte erneut versuchen.", vbOKOnly
Exit Sub
FehlerCall:
Fehler = Err.Description
'MsgBox "Ein Fehler ist aufgetaucht, bitte an Admin wenden.", vbOKOnly
Call Error_Doku(Modul, Fehler)
End Sub
Anzeige
AW: No sir!
05.10.2025 19:20:50
Piet
Hallo Marc

du hast eine sehr komplexe Fehlerbehandlung, mit mehreren MsgBoxen.
Da macht es Sinn jede einzelne seperat zu bearbeiten, mit Exit Sub!

Der Code von Mike macht das nicht erforderlich, aber die Events MÜSSEN auf True gesetzt werden.
Ob man den Befehl 2x verwendet, mit Exit Sub, oder im Error Handler auf True setzt ist völlig wurscht!

mfg Piet
Anzeige
AW: No sir!
07.10.2025 15:24:48
Marc
Hallo Piet,

genau da sehen ich es , auch im Rahmen meiner Arbeit es anders.
Es Mag in diesem Fall alles korrekt ab laufen, doch nicht immer bleibt es so vereinfacht und es wird schnell komplizierter.
Da macht es viel mehr Sinn, von Anfang an den Usus zu lernen Exception Handle und normalen Code strikt zu trennen .. auch wenn in diesem Fall es bedeutet, den Code 2x zu schreiben ..
bzw. in diesem Fall bräuchte man das Error Handle gar nicht, und könnte einfach mit



On Error GoTo next


sich immer weiter nach unten zu arbeiten, bis man bei Event wieder angekommen ist.

Natürlich komme ich , in diesem Fall erst recht, oft irgendwie an Ziel. Aber das Verständnis zwischen Trennung von strikten Code und Exceptions bleibt auf der Strecke, was dann im späteren Verlauf wahnsinnig schwierig macht Code/Abläufe nach zu vollziehen.

Anzeige
AW: Range um eine Einzelzelle erweiternerweitern
04.10.2025 18:36:29
mike49
Danke euch beiden. Ja so klappt's! Merke mir das 😉

Liebe Grüße
mike49
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18