Thema Datum  Von Nutzer Rating
Antwort
Rot Formulartextboxen mit Uhrzeiten rechnen
12.10.2021 10:26:06 Michael
NotSolved
12.10.2021 12:21:08 Der Steuerfuzzi
Solved
12.10.2021 18:28:01 Michael
NotSolved
12.10.2021 17:15:25 Gast73854
NotSolved
12.10.2021 18:29:18 Michael
NotSolved
12.10.2021 17:17:48 Gast15772
NotSolved
12.10.2021 18:32:29 Michael
NotSolved
12.10.2021 18:49:26 Gast8859
NotSolved
13.10.2021 06:29:13 Michael
NotSolved

Ansicht des Beitrags:
Von:
Michael
Datum:
12.10.2021 10:26:06
Views:
757
Rating: Antwort:
  Ja
Thema:
Formulartextboxen mit Uhrzeiten rechnen

Moin Leute,

ich erstelle gerade eine Eingabemaske um statistische Daten von PC-Leghastenikern (oder kurz: meinen Kollegen laugh) möglichst unfallfrei in eine Excel-Tabelle eintragen zu lassen um dann hinterher mit den Daten zu arbeiten.

Ich möchte vorweg schicken, dass ich das scripten nicht beruflich gelernt oder offizielle Kurse besucht habe, sondern als Interessensgebiet mit Hilfe solcher Foren wie hier, google und YouTube selbst meine Kenntnisse erworben habe.
Ich nutze auch Codeschnipsel die ich nicht in Gänze verstehe aber mir empfohlen wurden und eigentlich auch funktionieren. Jetzt steh ich allerding vor einem Problem wofür ich nur mit Recherche leider keine Lösung finde.

Die Eingabemaske

Unter anderem werden auch die Uhrzeiten erfasst in den Textfeldern txtZeit1 für den Beginn des Einsatzes und txtZeit2 für das Ende. In txtZeit3 soll die Dauer des Einsatzes angezeigt werden.
Um sicher zu gehen, dass die Zeiten im richtigen Format eingetragen werden habe ich mir folgende Funktion rausgesucht:

1   Private Sub txtzeit2_afterupdate()
2       'Zeitformat korrigieren
3       Dim tString As String
4           With Me.txtZeit2
5               If InStr(1, .Value, ":", vbTextCompare) = 0 Then
6                   tString = Format(.Value, "0000")
7                   tString = Left(tString, 2) & ":" & Right(tString, 2)
8                   Me.txtZeit2.Value = Format(TimeValue(tString), "HH:MM")
9               Else
10                  .Value = Format(.Value, "hh:mm")
11              End If
12          End With
13    
14      'Gesamteinsatzzeit berechnen und in Feld txtZeit3 eintragen
15      Me.txtZeit3.Value = Format(CDate(Me.txtZeit2.Value) - CDate(Me.txtZeit1.Value), "hh:mm")
16  End Sub

Sie macht im Grunde, dass was sie soll. Wenn ich eine Uhrzeit einfach hintereinander weg geschrieben eingebe (z.B. "0745") dann ändert er es automatisch in das gewünschte Format ("07:45") um. Funktioniert einwandfrei.

Jetzt ist der Bug aufgetaucht als ich simuliert habe wie der Anwender eine falsch eingegebene Uhrzeit korrigiert. Löscht der Anwender alles raus und gibt sofort wieder eine gültige Uhrzeit ein, dann ist alles Tutti. Wird aber in einem der Felder die Eingabe gelöscht und dann ohne eine Eingabe das Feld verlassen, dann kommt die Meldung "Laufzeitfehler '13': Typen unverträglich".
Meine Vermutung ist, dass der Fehler in Zeile 7 zu suchen ist, da die Textbox upgedated wird und die Funktion nicht damit klar kommt, dass nichts eingetragen ist wenn sie ausgeführt wird.

Meine Frage ist jetzt: Wie kann ich den Fehler verhindern ohne auf die Korrektur und Umformatierung der Eingabe verzichten zu können?

 

Eine kleine Zusatzfrage: Da ich eine Kontrollfunktion mit drin haben möchte und die Dauer des Einsatzes erfasst werden soll lasse ich das Formular in txtZeit3 die Länge des Einsatzes anhand der anderen beiden Felder errechnen (Siehe Codezeile 14ff).
Die Berechnung macht er ohne Probleme, gibt es aber natürlich im Format hh:mm aus. Ich hätte eigentlich gerne die Gesamteinsatzzeit in Minuten. Trage ich als Format mm ein gibt er mir natürlich nur die Minutenanzeige und rechnet die Stunden nicht mit drauf.

Beispiel:
In txtZeit1 wird "07:53" und in txtZeit2 "08:59" eingetragen. Aktuell berechnet er das und gibt in txtZeit3 "01:06" aus. Stelle ich auf das Format mm um bekomme ich natürlich nur "06" als Ergebnis. Ich möchte aber, dass er mir "66" als Ergebnis ausgibt, da das die Minuten sind, die der Einsatz gedauert hat.
In der Tabelle rechnet er mir das ja auch (trotz eingestelltem Zeitformat) mit SUMME=([C:3]-[C:2]*1440) in Minuten um. So hätte ich das auch gerne in der Eingabemaske in VBA.

Zweites Problem mit der Berechnung der Zeit Aktuell ist auch, wenn die Eingabe der Zeiten vertauscht werden gibt er kein negatives Ergebnis aus sondern immer ein positives, was eine Kontrollfunktion der Richtigkeit der Eingabe echt erschwert.

 

Vielen Dank an alle, die bis hierher durchgehalten haben. Ich befürchte ich habe beim Versuch meine Problematik so ausführlich wie möglich zu beschreiben etwas übertrieben. Ich hoffe trotzdem, dass mir jemand dabei helfen kann. smiley


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Formulartextboxen mit Uhrzeiten rechnen
12.10.2021 10:26:06 Michael
NotSolved
12.10.2021 12:21:08 Der Steuerfuzzi
Solved
12.10.2021 18:28:01 Michael
NotSolved
12.10.2021 17:15:25 Gast73854
NotSolved
12.10.2021 18:29:18 Michael
NotSolved
12.10.2021 17:17:48 Gast15772
NotSolved
12.10.2021 18:32:29 Michael
NotSolved
12.10.2021 18:49:26 Gast8859
NotSolved
13.10.2021 06:29:13 Michael
NotSolved