Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

UserForm TextBox mit ComboBox Datum vergleichen


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

Beiträge aus dem Excel-Forum zum Thema "UserForm TextBox mit ComboBox Datum vergleichen"