Herbers Excel-Forum - das Archiv

UserForm TextBox mit ComboBox Datum vergleichen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Betrifft: UserForm TextBox mit ComboBox Datum vergleichen
von: Andreas

Geschrieben am: 09.09.2019 16:08:45
Hallo Excelfreunde,
In meiner UserForm habe ich eine ListBox1 die ich per Macro mit Daten aus meiner Tabelle1 einlese und befülle.
klicke ich auf einen Datensatz in der ListBox1 wird mir der Label1 mit (Datumswert zB.10.02.2020) befüllt
zusätzlich habe ich auf meiner UserForm noch 2 ComboBoxen
ComboBox1 (wird durch Listauswahl mit allen 12 Monaten zB. Januar,Februar,März,usw. ....bis Dezember) zur Auswahl befüllt
ComboBox2 (wird ebenfalls durch Listauswahl mit Jahreszahlen zB. 2019,2020,2021,2022,usw. ......bis 2040) zur Auswahl befüllt.
Jetzt zu meinem Anliegen wo ich eure Hilfe benötige.
Ich wähle in der ComboBox1 den Monat zB. "Februar" aus
in der ComboBox2 wähle ich zB. das Jahr "2020" aus
Im Label1 wurde mir zB. das Datum "10.08.2021" eingelesen
jetzt möchte ich den Monat aus ComboBox1 und gleichzeitig das Jahr aus ComboBox2
mit dem Datum in Label1 vergleichen.
wenn dieses Datum von der Auswahl in ComboBox1 und ComboBox2 abweicht, dann soll mir eine Info mitgeteilt werden das das Datum aus Label1 von der Auswahl aus ComboBox1 und ComboBox2 abweicht.
Wenn das Datum der Comboboxen (Monat und Jahr) dem Datum aus Label1 (auch nur Monat/Jahr) entspricht dann soll nichts passieren.
Kann man das mit VBA in der UserForm abfragen? oder muß ich da vielleicht über Hilfsspalten in meiner Tabelle gehen.
Hätte es gern aber über VBA gelöst.
Kann mir jemand von euch dazu den Code oder Lösung zu meinem Anliegen nennen?
Für Eure Bemühungen bedanke ich mich bereits.
Gruß Andreas

Betrifft: AW: UserForm TextBox mit ComboBox Datum vergleichen
von: 1712046.html

Geschrieben am: 09.09.2019 16:35:21
Hallo Andreas,
würde ich so machen:
Option Explicit

Private Sub CommandButton1_Click()
    Dim dtmDate1 As Date, dtmDate2 As Date
    If ComboBox1.ListIndex = -1 Then
        Call MsgBox("Bitte einen Monat auswählen.", vbExclamation, "Hinweis")
    Else
        If ComboBox2.ListIndex = -1 Then
            Call MsgBox("Bitte ein Jahr auswählen.", vbExclamation, "Hinweis")
        Else
            If ListBox1.ListIndex = -1 Then
                Call MsgBox("Bitte einen Datum auswählen.", vbExclamation, "Hinweis")
            Else
                dtmDate1 = CDate(Label1.Caption)
                dtmDate2 = CDate("01." & ComboBox1.Text & "." & ComboBox2.Text)
                If Month(dtmDate1) <> Month(dtmDate2) Or Year(dtmDate1) <> Year(dtmDate2) Then
                    Call MsgBox("Das Monat oder das Jahr weicht ab.", vbExclamation, "Hinweis")
                Else
                    'Mach was anderes
                End If
            End If
        End If
    End If
End Sub

Private Sub ListBox1_Click()
    Label1.Caption = ListBox1.Text
End Sub

Private Sub UserForm_Initialize()
    Dim lngMonth As Long, lngYear As Long
    With Tabelle1
        ListBox1.List = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
    End With
    For lngMonth = 1 To 12
        Call ComboBox1.AddItem(pvargitem:=MonthName(lngMonth))
    Next
    For lngYear = 2000 To 2030
        Call ComboBox2.AddItem(pvargitem:=CStr(lngYear))
    Next
End Sub

Gruß
Nepumuk

Betrifft: Danke klappt super
von: 1712187.html
Geschrieben am: 10.09.2019 09:57:24
Hallo Nepumuk,
super
genau das was ich gesucht habe. Funktioniert bestens
nochmals recht herzlichen Dank für Deine schnelle Hilfe
Gruß Andreas

Betrifft: noch mal auf offen gestellt. Brauche nochmal Hilfe
von: 1712293.html

Geschrieben am: 10.09.2019 16:10:26
Hallo Exelfreunde,
hatt oben genannten Lösungsvorschlag von Nepumuk erhalten.
Dies hat bei meinem ersten Testen der Datei auch soweit funktioniert.
Habe das aber jetzt für meine OrigDatei nachgebaut und soweit angepasst.
Das Problem bei meinem Code ist nach der Zeile wo die MsgBox mit ja/nein/abbrechen beantwortet werden soll.
Irgendwie kriege ich das nicht hin das er mir
1. Wenn ich die Abfrage mit "ja" anklicke soll er mir die UserForm offen lassen für eine Korrektur
2. Wenn ich die Abfrage mit "nein" anklicke soll er mir die UserForm schließen
3. bei "Abbrechen" soll er mir auch die UserForm noch offen lassen
vielleicht einfach nochmals über meinen Code schauen wo bei mir der Fehler liegt.
Vielleicht ist es auch nur ein simpler Denkfehler von mir.
Im Code sieht man auch das ich es mit "End" , "Cancel = True" , "Cancel = False" in verschiedene Richtungen probiert habe.
Es will einfach nicht funktionieren das bei "ja" die UserForm noch offen bleibt und bei "nein" die UserForm geschlossen wird.
Hier mal mein Code
Private Sub cbo_Beenden_Click()
'Dim Antwort As Byte
Dim Cancel As Byte
Dim dtmDate1 As Date, dtmDate2 As Date
If ComboBox118.ListIndex = -1 Then
Call MsgBox("Bitte einen Monat auswählen.", vbExclamation, "Hinweis")
Else
If ComboBox119.ListIndex = -1 Then
Call MsgBox("Bitte ein Jahr auswählen.", vbExclamation, "Hinweis")
Else
If ListBox1.ListIndex = -1 Then
Call MsgBox("Bitte einen Datum auswählen.", vbExclamation, "Hinweis")
Else
dtmDate1 = CDate(Label633.Caption)
dtmDate2 = CDate("01." & ComboBox118.Text & "." & ComboBox119.Text)
If Month(dtmDate1) <> Month(dtmDate2) Or Year(dtmDate1) <> Year(dtmDate2) Then
If MsgBox("ACHTUNG!!! aktuelle Termineingaben weichen vom Terminplan ab. PRÜFEN  _
und gegebenenfalls Terminplan anpassen.", vbYesNo + vbQuestion, "Achtung") = vbYes Then
End
'Cancel = True
'Cancel = False
Else
'Mach was anderes
'Call MsgBox("Andreas Test", vbExclamation, "Hinweis")
End If
End If
End If
End If
End If
If ComboBox118.ListIndex = -1 Then
Call MsgBox("Bitte einen Monat auswählen.", vbExclamation, "Hinweis")
Else
If ComboBox119.ListIndex = -1 Then
Call MsgBox("Bitte ein Jahr auswählen.", vbExclamation, "Hinweis")
Else
If ListBox1.ListIndex = -1 Then
Call MsgBox("Bitte einen Datum auswählen.", vbExclamation, "Hinweis")
Else
dtmDate1 = CDate(Label633.Caption)
dtmDate2 = CDate("01." & ComboBox118.Text & "." & ComboBox119.Text)
If Month(dtmDate1) <> Month(dtmDate2) Or Year(dtmDate1) <> Year(dtmDate2) Then
'Call MsgBox("Achtung!!!  Die Eingabe für den Monat oder das Jahr weichen  _
vom Datum Baubeginn ab (evl. korriegieren) oder unter Bemerkung Abweichung kurz begründen.", vbExclamation, "Hinweis")
If MsgBox("ACHTUNG!!! aktuelle Termineingaben weichen vom Terminplan ab. PRÜFEN  _
und gegebenenfalls Terminplan anpassen.", vbYesNo + vbQuestion, "Achtung") = vbYes Then
End
'Cancel = True
'Cancel = False
Else
'Mach was anderes
'Call MsgBox("Andreas Test", vbExclamation, "Hinweis")
End If
End If
End If
End If
End If
If ComboBox121.ListIndex = -1 Then
Call MsgBox("Bitte einen Monat auswählen.", vbExclamation, "Hinweis")
Else
If ComboBox122.ListIndex = -1 Then
Call MsgBox("Bitte ein Jahr auswählen.", vbExclamation, "Hinweis")
Else
If ListBox1.ListIndex = -1 Then
Call MsgBox("Bitte einen Datum auswählen.", vbExclamation, "Hinweis")
Else
dtmDate1 = CDate(Label637.Caption)
dtmDate2 = CDate("01." & ComboBox121.Text & "." & ComboBox122.Text)
If Month(dtmDate1) <> Month(dtmDate2) Or Year(dtmDate1) <> Year(dtmDate2) Then
If MsgBox("ACHTUNG!!! aktuelle Termineingaben weichen vom Terminplan ab. PRÜFEN  _
und gegebenenfalls Terminplan anpassen.", vbYesNo + vbQuestion, "Achtung") = vbYes Then
'End
'Cancel = True
Cancel = False
Else
'Mach was anderes
'Call MsgBox("Andreas Test", vbExclamation, "Hinweis")
End If
End If
End If
End If
End If
If ComboBox121.ListIndex = -1 Then
Call MsgBox("Bitte einen Monat auswählen.", vbExclamation, "Hinweis")
Else
If ComboBox122.ListIndex = -1 Then
Call MsgBox("Bitte ein Jahr auswählen.", vbExclamation, "Hinweis")
Else
If ListBox1.ListIndex = -1 Then
Call MsgBox("Bitte einen Datum auswählen.", vbExclamation, "Hinweis")
Else
dtmDate1 = CDate(Label637.Caption)
dtmDate2 = CDate("01." & ComboBox121.Text & "." & ComboBox122.Text)
If Month(dtmDate1) <> Month(dtmDate2) Or Year(dtmDate1) <> Year(dtmDate2) Then
If MsgBox("ACHTUNG!!! aktuelle Termineingaben weichen vom Terminplan ab. PRÜ _
FEN und gegebenenfalls Terminplan anpassen.", vbYesNo + vbQuestion, "Achtung") = vbYes Then
End
'Cancel = True
'Cancel = False
Else
End If
End If
End If
End If
End If
Unload Me
End Sub

Danke nochmals für die Unterstüzung
Gruß Andreas

Betrifft: AW: noch mal auf offen gestellt. Brauche nochmal Hilfe
von: 1712295.html

Geschrieben am: 10.09.2019 16:16:42
Hallo Andreas,
so geht das:
Private Sub CommandButton1_Click()
    Dim dtmDate1 As Date, dtmDate2 As Date
    If ComboBox1.ListIndex = -1 Then
        Call MsgBox("Bitte einen Monat auswählen.", vbExclamation, "Hinweis")
    Else
        If ComboBox2.ListIndex = -1 Then
            Call MsgBox("Bitte ein Jahr auswählen.", vbExclamation, "Hinweis")
        Else
            If ListBox1.ListIndex = -1 Then
                Call MsgBox("Bitte einen Datum auswählen.", vbExclamation, "Hinweis")
            Else
                dtmDate1 = CDate(Label1.Caption)
                dtmDate2 = CDate("01." & ComboBox1.Text & "." & ComboBox2.Text)
                If Month(dtmDate1) <> Month(dtmDate2) Or Year(dtmDate1) <> Year(dtmDate2) Then
                    If MsgBox("Das Monat oder das Jahr weicht ab.", _
                        vbExclamation Or vbYesNoCancel, "Hinweis") <> vbYes Then Call Unload(Object:=Me)
                Else
                    'Mach was anderes
                End If
            End If
        End If
    End If
End Sub

Gruß
Nepumuk

Betrifft: AW: noch mal auf offen gestellt. Brauche nochmal Hilfe
von: 1712297.html

Geschrieben am: 10.09.2019 16:18:44
Hallo Andreas,
ooooooooooops !!! So natürlich:
Private Sub CommandButton1_Click()
    Dim dtmDate1 As Date, dtmDate2 As Date
    If ComboBox1.ListIndex = -1 Then
        Call MsgBox("Bitte einen Monat auswählen.", vbExclamation, "Hinweis")
    Else
        If ComboBox2.ListIndex = -1 Then
            Call MsgBox("Bitte ein Jahr auswählen.", vbExclamation, "Hinweis")
        Else
            If ListBox1.ListIndex = -1 Then
                Call MsgBox("Bitte einen Datum auswählen.", vbExclamation, "Hinweis")
            Else
                dtmDate1 = CDate(Label1.Caption)
                dtmDate2 = CDate("01." & ComboBox1.Text & "." & ComboBox2.Text)
                If Month(dtmDate1) <> Month(dtmDate2) Or Year(dtmDate1) <> Year(dtmDate2) Then
                    If MsgBox("Das Monat oder das Jahr weicht ab.", _
                        vbExclamation Or vbYesNoCancel, "Hinweis") = vbNo Then Call Unload(Object:=Me)
                Else
                    'Mach was anderes
                End If
            End If
        End If
    End If
End Sub

Gruß
Nepumuk

Betrifft: Danke funktioniert
von: 1712412.html
Geschrieben am: 11.09.2019 10:18:45
Hallo Nepumuk,
ja so funktioniert es
Danke nochmals für deine schnelle Hilfe
Gruß Andreas

Excel-Beispiele zum Thema "UserForm TextBox mit ComboBox Datum vergleichen"
Diagramm in Userform XL-Dateien in UserForm listen
UserForm an Excel-Fenster anpassen Fundstellen in UserForm listen
Module und UserForms austauschen In einer Schleife auf Elemente einer UserForm zugreifen
Werte in eine ComboBox einer UserForm übernehmen Zellinhalt als Label-Aufschrift in UserForm
Alle CheckBoxes einer UserForm ansprechen Wenn kein Eintrag, UserForm nicht schließen
Bewerten Sie hier bitte das Excel-Portal