Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datumsformat in Combobox

Datumsformat in Combobox
Rosi
Hallo Forum,
irgendwie komme ich mal wieder nicht weiter.
Habe 2 Comboboxen:5 und 6) und beide so formatiert:
ComboBox5 = Format(ComboBox5, "dddd, dd/mm/")
Das Format wird korrekt angezeigt in der Box aber beim Vergleich der Werte beider Boxen bekomme ich stets den Laufzeitfehler 13 "Typen unverträglich".
Beim Testen mit "IsDate" sehe ich dass das die Comboboxen nicht als Datum erkannt werden.
Was kann ich tun?
Gruß Rosi
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datumsformat in Combobox
13.02.2011 18:19:30
Oberschlumpf
Hi Rosi
Wie der Befehl ComboBox.Text schon vermuten lässt, wird der Inhalt als Text gespeichert/ausgelesen.
Deine funktionierende Formatierung "dddd, dd/mm/" bezieht sich nur auf die Anzeige der CB-Werte, aber nicht auf die Speicherart.
Deswegen versuch mal den Vergleich mit CDate.
z Bsp
If CDate(Combobox5.text) = CDate(Combobox6.text) Then
MsgBox "Beide Datumseinträge sind gleich"
Else
MsgBox "Beide Datumseinträge sind nicht gleich"
End If
Und auch deine Zeile
ComboBox5 = Format(ComboBox5, "dddd, dd/mm/")
könntest du optimieren.
Irgdwo in deinem Code muss ja so was stehen wie:
ComboBox5 = Datumswert
Schreib doch gleich an dieser Stelle:
ComboBox5 = Format(Datumswert, "dddd, dd/mm/")
Hilfts?
Ciao
Thorsten
Anzeige
AW: Datumsformat in Combobox
13.02.2011 18:51:54
Rosi
Hallo Thorsten,
kriege es nicht hin,hatte einen ähnlichen Code verwendet....
Hier meine Eingaben:
Private Sub ComboBox5_Change()
ComboBox5.Text = Date
ComboBox5 = Format(ComboBox5, "dddd, dd/mm/")
End Sub

Private Sub CommandButton3_Click()
If Not IsDate(ComboBox6.Text) Then MsgBox "nein" ' Test ob Format erkannt wird
If CDate(ComboBox5) 

		
Anzeige
AW: Datumsformat in Combobox
13.02.2011 19:43:20
Rosi
Sorry,
hat noch jemand eine Idee?
Gruß Rosi
AW: Datumsformat in Combobox
13.02.2011 20:15:59
Gerd
Hallo Rosi,
mit deiner Umwandlung mit dem Format-Befehl hast Du keinen gültigen Datumswert in der Combobox mehr. Den Eintrag musst Du wieder ergänzen.
Sub Reparieren()
Dim X, Y
X = Format("01.03.10", "dddd, dd/mm/")
MsgBox X
Y = Split(X)(1) & Year(Date)
MsgBox Y
MsgBox IsDate(Y)
End Sub
Gruß Gerd
Anzeige
AW: Datumsformat in Combobox
13.02.2011 20:29:15
dan
Hallo Rosi,
ich habe dies probiert:
Option Explicit
Private Sub Compare_Click()
ComboBox1 = Format(ComboBox1, "dddd, dd/mm/")
ComboBox2 = Format(ComboBox2, "dddd, dd/mm/")
MsgBox VBA.TypeName(ComboBox1) & ", " & VBA.TypeName(ComboBox2)
MsgBox VBA.TypeName(ComboBox1.Value) & ", " & VBA.TypeName(ComboBox2.Value)
MsgBox VBA.IsDate(ComboBox1.Value) & ", " & VBA.IsDate(ComboBox2.Value)
If (ComboBox1.Value = ComboBox2.Value) Then
MsgBox "Values of combo1 and combo2 are equal..."
Else
MsgBox "Values of combo1 and combo2 are not equal..."
End If
End Sub

Private Sub UserForm_Initialize()
ComboBox1 = Date
ComboBox2 = Date
End Sub
Wo bekommst Du die Fehlermeldung?
Gruss dan, cz.
Anzeige
AW: Datumsformat in Combobox
14.02.2011 09:47:04
Rosi
Hallo Dan,Hallo Gerd,
eure Codes sind in sich schlüssig,jedoch habe ich nun mit ihnen- zu meinen Eingaben - gespielt und probiert,finde kein Ergebnis.
Der Fehler erscheint unter der letzten Eingabe meines hier aufgezeigten Codes.
Gruß Rosi
AW: Datumsformat in Combobox
14.02.2011 19:50:30
dan
Hallo Rosi,
falls Du noch Hilfe brauchst, dann poste den kompletten Code hier. Nur so kann man sagen was genau los ist.
Gruss dan, cz.
Anzeige
AW: Datumsformat in Combobox
15.02.2011 07:00:19
Rosi
Hallo Dan,
habe es hingekriegt.
Statt "Combobox_Change" habe ich "Combobox_Click" verwendet.Jetzt funktioniert es tadellos.
Danke euch für eure Bemühungen.
Gruß Rosi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datumsformat in Combobox


Schritt-für-Schritt-Anleitung

  1. Initialisiere die Comboboxen: Stelle sicher, dass die Comboboxen beim Laden des Formulars ein Datum enthalten. Das kannst Du mit folgendem Code erreichen:

    Private Sub UserForm_Initialize()
       ComboBox5 = Date
       ComboBox6 = Date
    End Sub
  2. Setze das Datumsformat: Verwende die Format-Funktion, um das Datum in der gewünschten Form anzuzeigen. Achte darauf, dass das Datum korrekt in der Combobox gespeichert wird:

    Private Sub ComboBox5_Change()
       ComboBox5.Text = Date
       ComboBox5 = Format(Date, "dddd, dd/mm/")
    End Sub
  3. Vergleiche die Werte: Um die Werte der beiden Comboboxen zu vergleichen, verwende CDate, um sicherzustellen, dass die Werte als Datum interpretiert werden:

    Private Sub CommandButton3_Click()
       If CDate(ComboBox5.Text) = CDate(ComboBox6.Text) Then
           MsgBox "Beide Datumseinträge sind gleich"
       Else
           MsgBox "Beide Datumseinträge sind nicht gleich"
       End If
    End Sub

Häufige Fehler und Lösungen

  • Laufzeitfehler 13 "Typen unverträglich": Dieser Fehler tritt auf, weil die Werte in den Comboboxen als Text gespeichert werden. Verwende CDate, um die Werte in Datum zu konvertieren, bevor Du sie vergleichst.

  • Datumsformat wird nicht erkannt: Stelle sicher, dass Du die richtige Formatierung verwendest. Die richtige Syntax für die Formatierung ist entscheidend.

  • Fehlende Datumswerte: Wenn Du das Format anwendest, ohne es mit einem gültigen Datumswert zu kombinieren, wird der Wert ungültig. Achte darauf, dass Du beim Setzen des Wertes in die Combobox immer einen gültigen Datumswert hinterlegst.


Alternative Methoden

  1. Verwendung von IsDate: Du kannst die IsDate-Funktion nutzen, um zu überprüfen, ob der Inhalt der Combobox als Datum erkannt wird:

    If Not IsDate(ComboBox5.Text) Then
       MsgBox "Das Datum wird nicht erkannt!"
    End If
  2. Verwendung von Val: Eine weitere Möglichkeit besteht darin, den Wert der Combobox mit der Val-Funktion zu konvertieren, um sicherzustellen, dass es sich um eine Zahl handelt, bevor Du mit dem Vergleich fortfährst.


Praktische Beispiele

Hier sind einige Beispiele, die Dir helfen, die Funktionsweise besser zu verstehen:

  • Beispiel zur Initialisierung:

    Private Sub UserForm_Initialize()
       ComboBox1 = Date
       ComboBox2 = Date
    End Sub
  • Beispiel für den Vergleich der Daten:

    Private Sub Compare_Click()
       If CDate(ComboBox1.Text) = CDate(ComboBox2.Text) Then
           MsgBox "Die Daten sind gleich."
       Else
           MsgBox "Die Daten sind unterschiedlich."
       End If
    End Sub

Tipps für Profis

  • Verwende Debug.Print: Bei der Fehlersuche kannst Du Debug.Print nutzen, um die Werte der Comboboxen in der unmittelbaren Fensteransicht zu überprüfen.

  • Vermeide globale Variablen: Halte Deinen Code sauber, indem Du lokale Variablen verwendest, um die Übersichtlichkeit zu erhöhen.

  • Verwende error handling: Implementiere Fehlerbehandlungsroutinen in Deinem Code, um unerwartete Fehler zu vermeiden und den Code robuster zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ein Datum korrekt eingegeben wird?
Verwende die IsDate-Funktion, um vor der Verarbeitung zu überprüfen, ob das Datum gültig ist.

2. Warum erhalte ich einen Laufzeitfehler beim Vergleich?
Dieser Fehler tritt auf, wenn die Werte der Comboboxen als Text gespeichert werden. Stelle sicher, dass Du die Werte mit CDate konvertierst, bevor Du den Vergleich vornimmst.

3. Was ist der Unterschied zwischen Text und Value in einer Combobox?
Text gibt den aktuell angezeigten Text zurück, während Value den tatsächlichen Wert der Auswahl zurückgibt. In vielen Fällen ist es besser, Value zu verwenden, um sicherzustellen, dass Du den gespeicherten Wert erhältst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige