Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 5

Laufzeitfehler 5
13.01.2021 15:02:49
Christoph
Hallo zusammen,
ich kriege unregelmäßig und nicht reproduzierbar bei folgendem Code immer mal wieder den "Laufzeitfehler 5: ungültige Prozedur oder ungültiges Argument". Dies verhindert folgend die Ausführung des Codes.
>
Der Code dient dazu das bei der Eingabe von Uhrzeiten kein ":" mehr gemacht werden muss.
Ich sehe den Fehler nicht, vielleicht fällt euch ja etwas auf.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Eingabebereich As String
Dim Eingabe, Zeitwert
If Target.Cells.Count > 1 Then Exit Sub
If InStr(Target, ":") Then Exit Sub
Eingabebereich = "c7:d41"
If Not Application.Intersect(Target, ActiveSheet.Range(Eingabebereich)) Is Nothing Then
If IsNumeric(Target.Value) Then
Application.EnableEvents = False
Eingabe = Format(Target.Value, "0000")
Zeitwert = _
Left(Format(Eingabe, "0000"), Len(Eingabe) - 2) & _
":" & _
Right(Format(Eingabe, "0000"), 2)
Target.Value = Zeitwert
End If
End If
Application.EnableEvents = True
End Sub

Danke schonmal für eure Hilfe und viele Grüße
Christoph

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

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 5
13.01.2021 15:24:40
peterk
Hallo
Wenn die Zelle gelöscht wird (Target.value="") liefert IsNumeric trozdem TRUE und dann kommt der Laufzeitfehler.
Peter
AW: Laufzeitfehler 5
13.01.2021 15:27:04
onur
"Laufzeitfehler 5: ungültige Prozedur oder ungültiges Argument" ist fast nichtssagend, solange du nicht verrätst, WO (welche Zeil) der Fehler kommt.
AW: Laufzeitfehler 5
13.01.2021 15:31:30
Oisse
Hallo Christoph
versuchs mal so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Eingabebereich As String
Dim Eingabe, Zeitwert
If Target.Cells.Count > 1 Then Exit Sub
If InStr(Target, ":") Then Exit Sub
Eingabebereich = "c7:d41"
If Not Application.Intersect(Target, ActiveSheet.Range(Eingabebereich)) Is Nothing Then
If IsNumeric(Target.Value) Then
Application.EnableEvents = False
Eingabe = Format(Target.Value, "0000")
Zeitwert = _
Left(Eingabe, 2) & _
":" & _
Right(Eingabe, 2)
Target.Value = Format(Zeitwert, "hh:mm")
End If
End If
Application.EnableEvents = True
End Sub

Gruß Oisse
Anzeige
AW: Laufzeitfehler 5
13.01.2021 16:01:00
Christoph
Vielen Dank für eure Antworten. Ich werde den Code dementsprechend anpassen bzw. testen.
Da der Fehler unregelmäßig auftritt, kann ich nicht genau sagen wie lange es bis zum nächsten Auftreten dauern würde.
Ich werde es ein paar Tage testen und dann Rückmeldung geben. Vielen Dank schonmal für eure Mühe.
AW: Laufzeitfehler 5
13.01.2021 16:49:51
Daniel
HI
was ist denn mit dem Einwand von Peter?
er schreibt dass der Fehler dann auftritt, wenn du eine Zelle leerst.
die Prüfung mit IsNumeric lässt eine Leerzelle durch, weil diese als 0 interpretiert wird, aber Format macht aus dieser Zelle den Text "" und nicht "0000", weil für eine Textfunktion eine Leerzelle nicht 0 ist, sondern der Text ""
damit crashen dann deine Textfunktionen, weil Left keinen negativen 2. Parameter zulässt.
um das abzufangen würde ich einfach eine zusätzliche Abfrage an den Anfang stellen und bei einer Leerzelle abbrechen:
    If Target.Cells.Count > 1 Then Exit Sub
If InStr(Target, ":") Then Exit Sub
if Target.Value = ""
Gruß Daniel
Anzeige
Workaround
13.01.2021 23:28:25
Yal
Hallo Christoph,
Ja, Eingabe von Zeiten mit ":" sind lästig.
Meine persönliche Lösung: in der Liste der Autokorrektur ",," durch ":" ersetzen lassen.
Doppelte Kommas kommen mMn nie vor.
Da der Komma in dem Zahlenblock vorhanden ist, ist der Aufwand an Fingerbewegung minimal.
Der Eintrag gilt für alle MSOffice-Applikationen (für VB-Editor nicht).
VG
Yal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige