Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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

Zeitvergleich Laufzeitfehler 13

Zeitvergleich Laufzeitfehler 13
03.09.2019 07:44:36
Stefan
Hallo Liebes Forum,
ich habe mich hier an Excel VBA versucht, und dank der Hilfe von euch, bin ich auch schon sehr weit gekommen.
Jetzt habe ich bei meiner Stundenerfassung noch ein Problem,
Wenn ich das Programm ablaufen lasse, bekomme ich laufzeitfehler 13 bei diesem Code angezeigt:
Function zeitvergleich(start As Variant, ende As Variant) As Boolean
zeitvergleich = False
start = CDbl(CDate(start))
ende = CDbl(CDate(ende))
If ende > start Or (ende 

Diese

Function wird insgesamt 8mal aufgerufen und zwar über diese Zeilen (Diese Code-Zeilen sind 8mal  _
vorhanden, aber mit unterschiedlichen Boxen):
If ComboBox_ZeitPb.Value  "" And ComboBox_ZeitPv.Value  "" And zeitvergleich( _
ComboBox_ZeitPv.Value, ComboBox_ZeitPb.Value) Then
Worksheets("Tabelle2").Range("F2").Value = Format(sumdiff(ComboBox_ZeitPv.Value,  _
ComboBox_ZeitPb.Value), "hh:mm")
Worksheets("Tabelle2").Range("E2").Value = ComboBox_Punktezähler.Text
End If
Er speichert mir die Zeilen auch richtig ab. Nur am ende kommt dieser Fehler 13.
Liegt es evtl daran, dass diese 

Function Zeitvergleich
achtmal aufgerufen wird? oder liegt das Problem wo ganz anders. Wenn _ ich diese

Function nur einmal aufrufe, d.h. die anderen 7 Code-Zeilen rausnehme, funktioniert es.
Viele grüße
Stefan Hiemer


		

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeitvergleich Laufzeitfehler 13
03.09.2019 09:58:54
Luschi
Hallo Stefan,

Nur am ende kommt dieser Fehler 13.
Da fragt man sich doch, welche Vba-Zeile Du genau meinst.
Außerdem arbeitest Du bei den Variablen unsauber.
- die Werte von Comboboxen sind immer vom Typ String
- also übergibst Du an die Funktion 'zeitvergleich' 2 Textwerte
- demzufolge sind die Übergabevariablen 'start' & 'ende' vom Typ String
- start = CDbl(CDate(start))
  hier rechnet Vba zwar richtig, kann aber den Variablentyp von 'start' nicht in Double umwandeln
  somit stehen in 'start' & 'ende' 2 Stringwerte, deren Vergleich mit ~f~ende > start~f~ wenig Sinn
macht
- in 'start' steht eine Kommazahl' (zb. 0,416666666666667 für 10:00)
- Zahlen in Vba benötigen aber einen Dezimalpunkt
- und zu 'sumdiff' wissen wir Garnichts
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Zeitvergleich Laufzeitfehler 13
03.09.2019 16:49:47
Stefan
Hallo,
Da fragt man sich doch, welche Vba-Zeile Du genau meinst.
Wenn das Programm fast fertig ist, alle Daten eingetragen hat, alles bearbeitet hat, stehen die Codezeilnen von der Function Zeitvergleich. Dort bringt er dann den Laufzeitfehler 13.
Wenn ich diese Function rausnehme, hätte ich bei meiner Zeiteintragung das Problem, dass die "kommt"-Zeit größer sein kann als die "geht"-Zeit.
Der Code Sumdiff ist folgender:
Function sumdiff(start As Variant, ende As Variant) As Date
Dim temp
temp = 1 + CDbl(CDate(ende)) - CDbl(CDate(start))
If temp > 1 Then temp = temp - 1
sumdiff = CDate(temp)
End Function
Diese beiden Codes habe ich von diesem Forum erhalten, der Thread dazu mit der Nummer 1710445.
Danke und Gruß
Stefan
Anzeige
AW: Zeitvergleich Laufzeitfehler 13
03.09.2019 21:10:00
Luschi
Hallo Stefan,
mit dieser Antwort weiß immer noch keiner, wo der Vba-Fehler auftritt. Für die Fehlersuche gibt die wunderbare Möglichkeit, mit BreakPoints (Haltepunkten zu arbeiten:
- setze den Cursor in die Zeile mit dem Code: start = CDbl(CDate(start))
- jetzt Funktionstaste F9 drücken
- die Zeile wird jetzt braun hinterlegt und am Rand erscheint ein brauner Punkt
- das ist ein Haltepunkt
- wenn Du jetzt den Programmcode startest, hält der Debugger an dieser Zeile an
  und die Zeile ist gelb hinterlegt
- mit Funktionstaste F8 kann man jeden Befehl einzeln weiterschalten
- irgendwann erscheint der Fehler und man kann reagieren
- genau diese Zeile mit dem entsprechenden Fehlercode ist wichtig
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Zeitvergleich Laufzeitfehler 13
04.09.2019 13:37:00
Stefan

start = CDbl(CDate(start))

ich hab das jetzt nach deiner Anleitung gemacht, und es ist diese Codezeile, wo der Fehler auftritt,
Beim "ersten" Durchlauf passiert nichts, da machter au alles richtig.
Da wird die Funktion "Zeitvergleich" in diesem Code aufgerufen:
If ComboBox_ZeitPb.Value  "" And ComboBox_ZeitPv.Value  "" And zeitvergleich( _
ComboBox_ZeitPv.Value, ComboBox_ZeitPb.Value) Then
Worksheets("Tabelle2").Range("F2").Value = Format(sumdiff(ComboBox_ZeitPv.Value,  _
ComboBox_ZeitPb.Value), "hh:mm")
Worksheets("Tabelle2").Range("E2").Value = ComboBox_Punktezähler.Text
End If

Wenn die Codefunktion Zeitvergleich das zweite mal aufgerufen wird, da tritt der fehler dann auf.
   If ComboBox_ZeitZb.Value  "" And ComboBox_ZeitZv.Value  "" And zeitvergleich( _
ComboBox_ZeitZv.Value, ComboBox_ZeitZb.Value) Then
Worksheets("Tabelle2").Range("H2").Value = Format(sumdiff(ComboBox_ZeitZv.Value,  _
ComboBox_ZeitZb.Value), "hh:mm")
Worksheets("Tabelle2").Range("G2").Value = ComboBox_Zeit.Text
End If

Dieser Zeitvergleich wird eben 8mal innerhalb eines CodeZykluses aufgerufen.
Ich hoffe, das wars, was du wissen wolltest.
lg Stefan
Anzeige
AW: Zeitvergleich Laufzeitfehler 13
05.09.2019 08:49:38
Luschi
Hallo Stefan,
hier mal mein Beispiel mit Fehlerbehandlung: https://www.herber.de/bbs/user/131854.xlsm
Gruß von Luschi
aus klein-Paris
AW: Zeitvergleich Laufzeitfehler 13
05.09.2019 11:00:22
Stefan
Hallo und danke erstmal, mit deinem Code funktioniert es wunderbar :)
Ich hab in meiner Maske noch einen kleinen Schönheitsfehler entdeckt...
Das hat mit dem Problem hier eigentlich nichts zu tun, aber evtl weißt du da auch ne Lösung. Ich probier auch, es dieses mal gleich präzise zu schreiben.
Meine Comboboxen_ZeitPV,_ZeitPB,... werden über die Tabelle 6 "bestückt" immer wenn die UserForm aktiviert wird.
Die Comboboxen sind alle in den Eigenschaften "Style" auf Drop Down gestellt worden und werden via folgendem Code ins richtige Format gebracht:
Private Sub Stundenanzeige(box As Variant)
If Me.Controls(box)  "" Then Me.Controls(box) = Format(CDbl(Me.Controls(box).Text), "hh:mm")
End Sub
Aufgerufen wird es immer mit dem "Change" einer Combobox. Dies erfolgt natürlich bei allen Comboboxen.
Private Sub ComboBox_Zeitpv_Change()
Call Stundenanzeige(ComboBox_Zeitpv.Name)
End Sub
Da ich aber insgesamt 80 Zeitwerte zur Auswahl habe, dauert es ewig bis ich nach unten komme.
Ich hatte versucht die Style-Eigenschaft auf 0 zu setzten, dann könnte ich ja etwas eingeben, theoretisch:
Ich bekomme dann,sobald ich eine Zahl eingegeben habe, den Fehler "Laufzeitfehler 13 : Typen unverträglich". Dieser Codeteil wird mir gelb unterlegt:
Me.Controls(box) = Format(CDbl(Me.Controls(box).Text), "hh:mm")
Ich weiß nicht ob es funktioniert, dass ich z.B. die ersten beiden Zahlen per Tastenfeld eingebe und dann per Pfeiltasten weitertippe....
Ich weiß nicht, ob ich es verständlich rüberbringen konnte, was mein Anliegen ist,...
Anzeige
AW: Zeitvergleich Laufzeitfehler 13
05.09.2019 16:17:42
Luschi
Hallo Stefan,
bei Style '0 - frmStyleDropDownCombo' wird beim Ändern des Wertes durch Vba die 'Private Sub ComboBox_Zeitpv_Change()' durch das Formular nochmal aufgerufen. Diese Ereignisfolge kann man nicht abschalten sondern nur vorzeitig beenden.
Bei Style '2 - frmStyleDropDownList tritt dieser Effekt nicht auf und es gibt eben keinen Fehler
Reihenfolge bei Style '0':
- User ändert den Wert in Combobox per Maus
- Ereignis 'ComboBox_Zeitpv_Change()' tritt ein
- Aufruf der Prozedur 'Private Sub Stundenanzeige(box As Variant)'
- hier wird der Auswahlwert umformatiert und als Anzeigewert in die Combobox geschrieben
- dadurch tritt das Ereignis 'Private Sub ComboBox_Zeitpv_Change()' erneut auf
- obwohl die eigentliche Prozedur 'Private Sub Stundenanzeige(box As Variant)' noch nicht beendet ist
- und jetzt kommt der Fehler
- entweder Du bleibst bei Stype '2' oder mußt mit einer Hilfsvariablen arbeiten

Dim bEventCB As Boolean
Private Sub UserForm_Activate()
'bEventCB = True
End Sub
Private Sub ComboBox_Zeitpv_Change()
If bEventCB Then
Call Stundenanzeige(Me.ComboBox1.Name)
End If
End Sub
Private Sub Stundenanzeige(box As Variant)
bEventCB = False
If Me.Controls(box)  "" Then Me.Controls(box).Value = _
Format(CDbl(Me.Controls(box).Text), "hh:mm")
bEventCB = True
End Sub

Es wird zwar auch hier das Change()-Ereignis erneut aufgerufen aber die Hiölfsvariable 'bEventCB' sorgt dafür das der If-Zweig nicht ausgeführt wird.
Gruß von Luschi
aus klein-Paris
PS: Beim Prüfen/Durchlaufen des Codes und gesetzten Haltepunkt(en) und F8-Taste kann man das wunderbar nachvollziehen!
Es gäbe aber auch die Möglichkeit die Uhrzeiten in Tabelle6 in Text umzuwandeln und diese dann als Datengrundlage für die Comboboxen zu nehmen:
- dann fiele der Budenzauber mit der Umwandelei einfach weg.
Anzeige
AW: Zeitvergleich Laufzeitfehler 13
05.09.2019 08:49:50
Luschi
Hallo Stefan,
hier mal mein Beispiel mit Fehlerbehandlung: https://www.herber.de/bbs/user/131854.xlsm
Gruß von Luschi
aus klein-Paris
AW: Zeitvergleich Laufzeitfehler 13
05.09.2019 08:49:58
Luschi
Hallo Stefan,
hier mal mein Beispiel mit Fehlerbehandlung: https://www.herber.de/bbs/user/131854.xlsm
Gruß von Luschi
aus klein-Paris
AW: Zeitvergleich Laufzeitfehler 13
05.09.2019 08:49:59
Luschi
Hallo Stefan,
hier mal mein Beispiel mit Fehlerbehandlung: https://www.herber.de/bbs/user/131854.xlsm
Gruß von Luschi
aus klein-Paris
AW: Zeitvergleich Laufzeitfehler 13
05.09.2019 08:50:03
Luschi
Hallo Stefan,
hier mal mein Beispiel mit Fehlerbehandlung: https://www.herber.de/bbs/user/131854.xlsm
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Zeitvergleich Laufzeitfehler 13
05.09.2019 08:50:14
Luschi
Hallo Stefan,
hier mal mein Beispiel mit Fehlerbehandlung: https://www.herber.de/bbs/user/131854.xlsm
Gruß von Luschi
aus klein-Paris
AW: Zeitvergleich Laufzeitfehler 13
05.09.2019 08:50:15
Luschi
Hallo Stefan,
hier mal mein Beispiel mit Fehlerbehandlung: https://www.herber.de/bbs/user/131854.xlsm
Gruß von Luschi
aus klein-Paris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige