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

Forumthread: Zeiten in Textbox addieren

Zeiten in Textbox addieren
22.12.2008 22:37:00
Lenni
Moin Ecxellianer!
Am folgenden raufe ich mir gerade die Haare...

Private Sub TextBox6_Change()
If TextBox0a = 2 Then
TextBox6 = TextBox5 + ?30 Minuten?  ...was müßte hier hin?
End If
End Sub


Wenn ich in meinem Userform in der TextBox6 die Zeit (in "hh:mm") aus der TextBox5 plus 30 Minuten anzeigen möchte, geht es denn ünberhaupt so, wie ich mir das vom Grundsatz her denke?!? ...und ist das Change-Ereignis überhaupt das Richtige?
Danke für Eure Hilfe!
Viele Grüße aus dem hohen Norden!
Lenni

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeiten in Textbox addieren
22.12.2008 22:56:54
Erich
Hallo Lenni,
besser als das Change- wäre vermutlich das Exit-Ereignis geeignet.
(Das Change-Ereignis tritt beim Eintippen jedes einzelnen Zeichens in die Textbox ein,
das Exit-Ereignis dagegen erst, wenn (am Ende der Eingabe) die Textbox verlassen wird.)
Und vermutlich wirst du nicht die Änderungen im TextBox6 überwachen wollen -
diese TB willst du ja mit dem Code verändern.
Ausgelöst werden könnte das durch Änderungen in TextBox0a oder TextBox5.
In TextBox0a muss dafür eine "2" stehen, in TextBox5 ein Text, der in eine Uhrzeit umgewandelt werden kann.
Probier mal:

Option Explicit
Private Sub TextBox0a_Exit(ByVal Cancel As MSForms.ReturnBoolean)
DoIt
End Sub
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
DoIt
End Sub
Private Sub DoIt()
If TextBox0a = "2" And IsDate(TextBox5) Then
TextBox6 = Format(CDate(TextBox5) + 1 / 48, "hh:mm")
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Zeiten in Textbox addieren
22.12.2008 23:18:00
Gerd
Hallo,
mit etwas weniger Kopfrechen, für mich leichter anzupassen.
TextBox6 = Format(TimeSerial(Hour(CDate(TextBox5)), Minute(CDate(TextBox1)) + 30, 0), "hh:mm")
Grüße Gerd
AW: Zeiten in Textbox addieren
22.12.2008 23:53:18
Lenni
Hallo Gerd! ...nun haben wir wohl gerade "parallel" geschrieben!
Deinen Vorschlag teste ich auch mal! Vielen Dank auch für Deine Hilfe!!
Gruß
Lenni
Anzeige
AW: Zeiten in Textbox addieren
22.12.2008 23:50:07
Lenni
Hallo Erich!!! ...Danke und Schön, dass ich mal wieder von Dir hier lese!!!
Danke für Deine Erklärungen und für Deinen Vorschlag!!! Du hast mir die entscheidende Hilfestellung gegeben und ich bin - bis auf eine Kleinigkeit* - weiter gekommen!! Vielen Dank Erich!
Ich bin allerdings beim Change-Ereignis geblieben, da ich mein UserForm durch eine Exit-Routine mit den bereits gemachten Eingaben stehen lasse. Zuvor wurde mir die 2 in die TextBox0a geschrieben. Und mit diesem letzteren Eintrag werden CommandButton von False auf Visible gesetzt, die UF-Caption ändert sich usw. usw. Und dabei habe ich auch das Instrument des Call-Aufrufes entdeckt! Da kann man ja feine Sachen machen...!!!
*...wegen der Kleinigkeit: Wenns da Schwierigkeiten gibt melde ich mich noch mal. Aber evtl. ergibt sich eine andere Fragestellung. Dann eröffne ich einen neuen Beitrag.
Vielen Dank nochmals Erich!!
Gruß
Lenni
Anzeige
AW: Zeiten in Textbox addieren
24.12.2008 22:28:35
Lenni
Hallo Erich! Hallo Gerd!
Ich wollte mich nur noch mal melden: Es funktioniert nun alles!! ...wegen meiner erwähnten Kleinigkeit.
Und Dein Vorschlag, Gerd, funktioniert auch perfekt!! ...Du hattest nur einen kleinen "Verschreiber" drinne! Sei ehrlich, Du wollttest mich testen... ;-))
Vielen Dank Euch beiden nochmals!!
Gruß
Lenni
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeiten in Textbox addieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um Zeiten in einer Textbox in Excel VBA zu addieren, folge diesen Schritten:

  1. Öffne das Visual Basic for Applications (VBA) Fenster:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein UserForm:

    • Füge ein UserForm hinzu und platziere drei TextBoxen (TextBox0a, TextBox5, TextBox6) und einen CommandButton.
  3. Füge den Code ein:

    • Klicke auf das UserForm und füge den folgenden Code in das Codefenster ein:
    Option Explicit
    
    Private Sub TextBox0a_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       DoIt
    End Sub
    
    Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       DoIt
    End Sub
    
    Private Sub DoIt()
       If TextBox0a = "2" And IsDate(TextBox5) Then
           TextBox6 = Format(CDate(TextBox5) + 1 / 48, "hh:mm") ' 30 Minuten hinzufügen
       End If
    End Sub
  4. Verwende das Exit-Ereignis:

    • Achte darauf, dass du das Exit-Ereignis verwendest, um sicherzustellen, dass der Code ausgeführt wird, nachdem die Eingabe in die TextBoxen abgeschlossen ist.
  5. Teste die Anwendung:

    • Schließe den VBA-Editor und teste das UserForm, um sicherzustellen, dass die Zeiten korrekt addiert werden.

Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich":

    • Stelle sicher, dass die Eingaben in TextBox5 im richtigen Zeitformat (hh:mm) eingegeben werden.
  • Fehler: TextBox6 bleibt leer:

    • Vergewissere dich, dass TextBox0a den Wert "2" enthält und dass TextBox5 eine gültige Zeit darstellt.
  • Verwendung des falschen Ereignisses:

    • Wenn du das Change-Ereignis verwendest, wird der Code bei jeder Eingabe in die TextBox ausgeführt. Das kann zu unerwarteten Ergebnissen führen. Nutze stattdessen das Exit-Ereignis.

Alternative Methoden

Eine alternative Methode zur Addition von Zeiten ist die Verwendung der TimeSerial-Funktion. Hier ein Beispiel:

TextBox6 = Format(TimeSerial(Hour(CDate(TextBox5)), Minute(CDate(TextBox5)) + 30, 0), "hh:mm")

Diese Methode ist besonders nützlich, wenn du die Minuten direkt hinzufügen möchtest, ohne die Datumslogik zu verwenden.


Praktische Beispiele

  1. Beispiel 1:

    • Wenn TextBox5 den Wert "12:00" hat und TextBox0a auf "2" gesetzt ist, zeigt TextBox6 nach der Berechnung "12:30" an.
  2. Beispiel 2:

    • Bei einer Eingabe von "23:45" in TextBox5 wird TextBox6 "00:15" anzeigen, was zeigt, dass die Zeit über Mitternacht hinaus korrekt berechnet wird.

Tipps für Profis

  • Nutze die Formatierung: Achte darauf, dass die Zeitformate korrekt eingegeben werden. Verwende die Format-Funktion, um sicherzustellen, dass die Zeit in einem einheitlichen Format angezeigt wird.

  • Verwende IsDate: Die Verwendung der IsDate-Funktion ist wichtig, um zu überprüfen, ob die Eingabe in TextBox5 eine gültige Zeit ist.

  • Debugging: Verwende Debugging-Tools im VBA-Editor, um den Ablauf Deines Codes zu verfolgen und mögliche Fehlerquellen schnell zu identifizieren.


FAQ: Häufige Fragen

1. Wie kann ich die Zeit in einem anderen Format anzeigen? Du kannst das Format in der Format-Funktion anpassen, z.B. "hh:mm:ss" für Stunden, Minuten und Sekunden.

2. Was passiert, wenn ich eine ungültige Zeit eingebe? Wenn die Eingabe in TextBox5 keine gültige Zeit ist, wird TextBox6 leer bleiben. Verwende die IsDate-Überprüfung, um dies zu verhindern.

3. Kann ich auch Stunden anstelle von Minuten hinzufügen? Ja, um Stunden hinzuzufügen, ändere die Berechnung in der DoIt-Subroutine. Zum Beispiel, um 1 Stunde hinzuzufügen, ändere 1 / 48 zu 1 / 24.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige