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

Textbox addieren zeit

Textbox addieren zeit
07.02.2022 11:56:44
Dani
Hallo
Ich brauche mal Hilfe von euch
Folgender Code habe ich geschrieben im Commandbutton funktioniert der Code, jedoch wenn ich den Code im sub schreibe kommt Fehler Meldung Laufzeitfehler 13 Typen unverträglich
Was mache ich Falsch oder wie muss ich den Code Schreiben?

Private Sub sumi()
Dim Start As Date
Dim Ende As Date
Dim Pause As Date
Start = Format(CDate(TextBoxKZ.Value), "hh:mm")
Ende = Format(CDate(TextBoxWZ.Value), "hh:mm")
Pause = Format(CDate(TextBoxPause.Value), "hh:mm")
LBTotalzwischen.Caption = Start + Pause + Ende
LBTotalzwischen.Caption = Format(CDate(LBTotalzwischen.Caption), "hh:mm")
End Sub
Besten Dank für eure Hilfe
Gruß
Dani

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox addieren zeit
07.02.2022 12:11:46
{Boris}
Hi,
wahrscheinlich werden Deine Objekte nicht genau erkannt - oder die Inhalte lassen sich nicht mit CDate umwandeln.
Für mehr zeig mal Deine Datei.
VG, Boris
AW: Textbox addieren zeit
07.02.2022 12:31:58
Alwin
Hallo Dani,
das Problem steht bestimmt in Bezug auf deinen letzten Thread.
Anbei die Datei. Die Berechnung wird beim Drücken von +/- Button ausgelöst.
Da ist aber noch keine Fehlerbehandlung drin. Deshalb das Eingabeformat: Ziffer Doppelpunkt Ziffer
https://www.herber.de/bbs/user/150963.xlsm
Gruß Uwe
AW: Textbox addieren zeit
07.02.2022 14:26:44
Dani
Hallo Boris
Hallo Uwe
Vielen Dank für die Prompte Antwort
Ich habe dies auch erkannt darum habe ich ein Zwischen Total eingebaut dies soll nur die drei Textboxen addieren (Zeitformat), also Zeit + Zeit1 + Pause.
der Zweite schritt ist dann +/- Button der die Korrekturzeit abzieht oder da zu zählt vom Zwischen Total.
https://www.herber.de/bbs/user/150966.xlsm
Darum versuche ich fiberhaft den Laufzeitfehler zu finden, wo ran könnte es noch liegen?
Gruß
Dani
Anzeige
Dein Userform...
07.02.2022 14:31:59
{Boris}
Hi,
...ist für meinen Bildschirm (32 Zoll) viel zu groß.
Was genau muss man wo eingeben, um den Fehler zu reproduzieren?
VG, Boris
AW: Textbox addieren zeit
07.02.2022 15:08:19
Daniel
HI
1. Format erzeugt TEXT. Eine Aufnehmenden Variablen sind jedoch vom Type Date, und das Erzeugtst du mit CDate, daher ist die Format-Funktion hier überflüssig
2. auch danach wirbelst du die Typen durcheinander. Eine Überschrift ist immer Text, also sollte man da keine Zahlen direkt reinschreiben (beispielsweise das Ergebnis einer Addition), sondern hier müsste man die Addition der Werte mit Format in einen Text wandeln und danach erst in die Caption schreiben.
3. bei Start - Ende - Pause ist es normalerweise, so, dass man rechnet "Ende - Start - Pause" und nicht "Start + Pause + Pause". ist es richtig, das alles reine Addtionen sind? oder wird eigentlich subtrahiert und du gibst negative Werte in die Textbox ein, also bspw "-15:30" ? So einen Text kann Excel nicht in eine Zeit umwandeln, da für Excel Zeiten immer Uhrzeiten sind, die nicht negativ sein können.
Wen das der Fall ist, müsstest du diese Zeiten dann ohne den "-" in die Textbox eingeben und in der Berechung dann Subtrahieren statt Addieren.
ohne den Punkt 3 zu berücksichtigen, müsste dein Code so aussehen:

Private Sub sumi()
Dim Start As Date
Dim Ende As Date
Dim Pause As Date
Start = CDate(TextBoxKZ.Value)
Ende = CDate(TextBoxWZ.Value)
Pause = CDate(TextBoxPause.Value)
LBTotalzwischen.Caption = Format(Start + Pause + Ende, "hh:mm")
End Sub
Gruß Daniel
Anzeige
AW: Textbox addieren zeit
07.02.2022 21:03:40
Alwin
Hallo Dani,
es stand fast alles schon drin. Es waren nur die Rechenzeichen zu ändern und die hinzugekommene Textbox in die Prozedur entsprechend einzubinden.
https://www.herber.de/bbs/user/150978.xlsm
Gruß Uwe
AW: Textbox addieren zeit
08.02.2022 13:31:12
Dani
Hallo Uwe
Hallo Boris
Uwe vielen Lieben Dank dafür, und Danke dir auch das du mir unermüdlich hilfst.
Ist eine Variante lieber hätte ich es das der erste Schritt. Die Textboxen Zeit + Zeit1 + Pause = Zwischentotal wehrend dem ein tippen soll gleich
gerechnet werden ohne +/-Button
Darum versuche ich es Fieberhaft zu lösen, auch wenn ich deinen Code benütze aus dem ToggleButton auch da erhalte ich die Fehlermeldung
Ich habe jetzt die Datei noch mal überarbeitet.
Boris auch dir vielen lieben Dank das du dir die Zeit nimmst und hilfst.
So jetzt könnt Ihr mal die Userform starten und beim Zeit / Zeit1 und Pause die Zeit eintippen es muss vierstellig sein ohne den Doppelpunkt, dann werdet Ihr die Fehlermeldung erhalten.
https://www.herber.de/bbs/user/150991.xlsm
Wo liegt das Problem ?
Gruß
Dani
Anzeige
AW: Textbox addieren zeit
08.02.2022 17:30:16
Daniel
warum ignorierst du mich?
wenn ich dir nicht helfen soll, dann lass ich es.
Gruß Daniel
AW: Textbox addieren zeit
08.02.2022 20:57:52
Dani
Lieber Daniel
In aller Ehre möchte ich mich bei dir Entschuldigen, es ist mir effektiv unter gegangen das du mich angeschrieben hast, denn wir sind Namensvetter.
Dies war auch eine Lehre genau hin zu schauen wer was Schreibt.
Natürlich bin ich für jede Hilfe sehr dankbar.
Deine Code werde ich heute Nacht noch Testen.
Beste Grüße
Dani
AW: Textbox addieren zeit
08.02.2022 21:13:57
Alwin
Hallo Dani,
ändere es so:

Private Sub SumZeit()
If Not TextBoxKz = "" And Not TextBoxWz = "" And Not TextBoxPause = "" And Len(TextBoxPause) = 5 Then
TextBoxZwTotal = Format(CDate(TextBoxWz) + CDate(TextBoxKz) + CDate(TextBoxPause), "hh:mm")
End If
End Sub
Gruß Uwe
Anzeige
AW: Textbox addieren zeit
09.02.2022 11:22:34
Alwin
der Vollständigkeit und Korrektheit halber, ändere es besser so:

Private Sub SumZeit()
If Len(TextBoxKz) = 5 And Len(TextBoxWz) = 5 And Len(TextBoxPause) = 5 And Len(TextBoxPause) = 5 Then
TextBoxZwTotal = Format(CDate(TextBoxWz) + CDate(TextBoxKz) + CDate(TextBoxPause), "hh:mm")
End If
End Sub
Gruß Uwe
AW: Textbox addieren zeit
09.02.2022 11:30:10
Dani
Hallo Uwe
Okay bin gerade dran zu studieren was Len bedeute und für was die Zahl 5 ist.
Vorab Besten Dank dafür
Gruß
Dani
AW: Textbox addieren zeit
09.02.2022 12:16:47
Dani
Hallo Uwe
Okay bin gerade dran zu studieren was Len bedeute und für was die Zahl 5 ist.
Warum wird hier zwei mal Textboxpause erfasst? es geht darum das ich den Code verstehe.
If Len(TextBoxKz) = 5 And Len(TextBoxWz) = 5 And Len(TextBoxPause) = 5 And Len(TextBoxPause) = 5 Then
Vorab Besten Dank dafür
Gruß
Dani
Anzeige
AW: Textbox addieren zeit
09.02.2022 12:31:57
Daniel
HI
die Sub SumZeit rufst du aus dem Change-Event der jeweiligen Textbox heraus auf.
dh diese Sub wird bei jeder Eingabe und Änderung an dieser Textbox aufgerufen - auch wenn diese Änderung per Code ausgeführt wird - , und daher auch dann, wenn die Eingaben noch unvollständig sind. Da kann dann so ein Text wie "00:" drinstehen. Diesen Text kann die Funktion CDate aber nicht in eine Zeit oder Datum auflösen und dann bekommst du einen Fehlerabbruch.
ich würde also vor Anwendung von CDate(xyz) immer überprüfen, ob xyz auch ein Text ist, den VBA in eine Zeit oder Datum umwandeln kann, um den Fehlerabbruch zu vermeiden, und dazu gibt des die Funktion IsDate(xyz), die ein WAHR ergibt, wenn die Variable xyz schon eine Zeit oder ein Datum ist, oder einen Text enthält, den VBA in ein solches wandeln kann.
also würde ich hier eher so prüfen:

Private Sub SumZeit()
If IsDate(TextBoxKz) And IsDate(TextBoxWz) And IsDate(TextBoxPause)  Then
TextBoxZwTotal = Format(CDate(TextBoxWz) + CDate(TextBoxKz) + CDate(TextBoxPause), "hh:mm")
else
TextboxZwTotal = ""
End If
End Sub
vielleicht wäre es auch sinnvoll, die Sub SumZeit nicht über das Change-Event aufzurufen, sondern ebenfalls über das AfterUpdate-Event, so dass die Berechnung erst erfolgt, wenn die Eingabe abgeschlossen ist (müsstest du aber prüfen)
die Anwendung von IsDate vor CDate würde ich dir generell empfehlen, um Abbrüche bei Falscheingaben zu vermeiden. Es ist sonst sehr schwer zu erzwingen, das korrekte Uhrzeiten eingegeben werden. "15:00" ist bspw in eine Zeit wandelbar, "25:00" hingegen nicht.
Gruß Daniel
Anzeige
AW: Textbox addieren zeit
09.02.2022 12:48:32
Dani
Hallo Daniel
Vielen Lieben Dank für deine Tolle Erklärung. Ich habe erst jetzt festgestellt, wenn die Berechnung über 24 h geht müsste ich nicht Format von "hh:mm" auf [hh]:mm
ändern wenn ja wie?
Gruß
Dani
AW: Textbox addieren zeit
09.02.2022 13:57:04
Daniel
HI
wenn nur die Summe der Einzelzeiten über 24h hinausgehen kann, könntest du das mit

TextboxXXX.Text = WorksheetfunctionText(...Zeitsumme..., "[hh]:mm")
anstelle von Format machen.
die Excel Zellfunktion Text kennt die Zeitdarstellung mit dem Klammern, die VBA-Funktion Format nicht.
wenn auch die Eingabewerte schon über 24h hinaus gehen können, dann müsstest auch die Umwandlung der Texte in Zeit anders machen, CDate wandelt in Datum und Uhrzeit, und Uhrzeiten die größer als 23:59:59 sind, gibt es nicht.
du könntest dann so anstelle von CDate umwandeln

Dim X
Dim Zeit As Double
X = Split(TextboxXXX.Text, ":")
Zeit = X(0) / 24 + X(1) / 1440
Gruß Daniel
Anzeige
AW: Textbox addieren zeit
10.02.2022 10:59:38
Dani
Hallo zusammen
Besten Dank für eure wert volle Hilfe, bis jetzt funktioniert alles bestens. Nun habe ich eine neue Frage zum gleichem Thema, und zu gleich wieder mal brauche ich eure Hilfe
Folgendes
Textbox Zeit + Textbox Zeit1 = Ergebnis, nun soll geprüft werden vom Ergebnis ob der wert Zeit 07:00 kleiner ist, dann soll
von der Tabelle.Range("b4") den wert xl in die TextboxPause eingetragen werden, danach noch mal Rechnen Ergebnis + Textboxpause
Momentan probiere ich es so zu lösen und Scheiter wieder mal.

Private Sub sumZeit()
If Len(TextBoxKZ) = 5 And Len(TextBoxWZ) = 5 Then
LBZwTotal = Format(CDate(TextBoxWZ) + CDate(TextBoxKZ), "hh:mm")
ElseIf LBZwTotal 
Freundlicher Gruß
Dani
Anzeige
AW: Textbox addieren zeit
10.02.2022 21:04:58
Alwin
Hallo Dani,
hier hast du viel zu kompliziert gedacht.
setzte diesen 3 Zeiler vor das Ende der Prozedur vom +/- Button:

If CDbl(Left(TextBoxTotal, 2)) & CDbl(Right(TextBoxTotal, 2)) 
Ist zwar keine Berechnung der Zeit aber es reicht, wenn es funktioniert.
Gruß Uwe

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige