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

Problem mit Else bei If (wird nicht ausgeführt)

Problem mit Else bei If (wird nicht ausgeführt)
31.10.2017 14:25:47
Holger
Hallo zusammen!
Zunächst mal zu mir.
Ich bin der Holger, 32 Jahre alt und komme aus Köln.
Ich habe schon öfter bei euch im Forum gestöbert, und konnte mir einige nützliche Sachen abschauen, da ich selber erst vor ein paar Wochen mit VBA angefangen habe.
Zu meinem Problem:
Ich habe in VBA eine Userform, wo verschiedene TextBoxen installiert sind, die ein Datum beinhalten können. Je nach Konstellation werden diese aufbereitet, in ein Excelsheet übertragen, etc..
Nun habe ich einen Button eingebaut, wo bestimmte Dinge geprüft werden.
Am Ende wenn diese Prüfungen durchlaufen sind bzw. wenn durch den User Korrekturen vorgenommen wurden, soll eine andere Userform mit "Else" aufgerufen werden (Ende Quellcode).
Das klappt leider nicht, anscheinend ist irgendetwas mit der Verschachtelung nicht in Ordnung.
Ich würde mich freuen, wenn sich ein Profi erbarmen kann, mir auf die Sprünge zu helfen warum das "Else" nicht geht :D
Der Text ist unten, ich habe ihn ein bisschen formatiert. Wie kann ich ihn in einen schönen Rahmen packen?
Grüße aus Köln,
Holger
If TextBox46.Enabled = True And TextBox46 = "" Then
TextBox46.BackColor = vbRed
TextBox46.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox47.Enabled = True And TextBox47 = "" Then
TextBox47.BackColor = vbRed
TextBox47.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox48.Enabled = True And TextBox48 = "" Then
TextBox48.BackColor = vbRed
TextBox48.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox49.Enabled = True And TextBox49 = "" Then
TextBox49.BackColor = vbRed
TextBox49.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox50.Enabled = True And TextBox50 = "" Then
TextBox50.BackColor = vbRed
TextBox50.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox51.Enabled = True And TextBox51 = "" Then
TextBox51.BackColor = vbRed
TextBox51.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox52.Enabled = True And TextBox52 = "" Then
TextBox52.BackColor = vbRed
TextBox52.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox53.Enabled = True And TextBox53 = "" Then
TextBox53.BackColor = vbRed
TextBox53.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox54.Enabled = True And TextBox54 = "" Then
TextBox54.BackColor = vbRed
TextBox54.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox55.Enabled = True And TextBox55 = "" Then
TextBox55.BackColor = vbRed
TextBox55.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox56.Enabled = True And TextBox56 = "" Then
TextBox56.BackColor = vbRed
TextBox56.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox57.Enabled = True And TextBox57 = "" Then
TextBox57.BackColor = vbRed
TextBox57.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox58.Enabled = True And TextBox58 = "" Then
TextBox58.BackColor = vbRed
TextBox58.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox59.Enabled = True And TextBox59 = "" Then
TextBox59.BackColor = vbRed
TextBox59.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox60.Enabled = True And TextBox60 = "" Then
TextBox60.BackColor = vbRed
TextBox60.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox61.Enabled = True And TextBox61 = "" Then
TextBox61.BackColor = vbRed
TextBox61.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
ElseIf TextBox62.Enabled = True And TextBox62 = "" Then
TextBox62.BackColor = vbRed
TextBox62.SetFocus
MsgBox "Bitte Schulungsdaten eintragen"
End If
If IsDate(TextBox46) Then
If CDate(TextBox46) < Date Then
TextBox46.BackColor = vbRed
Me.TextBox46.SetFocus
Me.TextBox46.SelStart = 0
Me.TextBox46.SelLength = Len(Me.TextBox46)
End If
ElseIf IsDate(TextBox47) Then
If CDate(TextBox47) < Date Then
TextBox47.BackColor = vbRed
Me.TextBox47.SetFocus
Me.TextBox47.SelStart = 0
Me.TextBox47.SelLength = Len(Me.TextBox47)
End If
ElseIf IsDate(TextBox48) Then
If CDate(TextBox48) < Date Then
TextBox48.BackColor = vbRed
Me.TextBox48.SetFocus
Me.TextBox48.SelStart = 0
Me.TextBox48.SelLength = Len(Me.TextBox48)
End If
ElseIf IsDate(TextBox49) Then
If CDate(TextBox49) < Date Then
TextBox49.BackColor = vbRed
Me.TextBox49.SetFocus
Me.TextBox49.SelStart = 0
Me.TextBox49.SelLength = Len(Me.TextBox49)
End If
ElseIf IsDate(TextBox50) Then
If CDate(TextBox50) < Date Then
TextBox50.BackColor = vbRed
Me.TextBox50.SetFocus
Me.TextBox50.SelStart = 0
Me.TextBox50.SelLength = Len(Me.TextBox50)
End If
ElseIf IsDate(TextBox51) Then
If CDate(TextBox51) < Date Then
TextBox51.BackColor = vbRed
Me.TextBox51.SetFocus
Me.TextBox51.SelStart = 0
Me.TextBox51.SelLength = Len(Me.TextBox51)
End If
ElseIf IsDate(TextBox52) Then
If CDate(TextBox52) < Date Then
TextBox52.BackColor = vbRed
Me.TextBox52.SetFocus
Me.TextBox52.SelStart = 0
Me.TextBox52.SelLength = Len(Me.TextBox52)
End If
ElseIf IsDate(TextBox53) Then
If CDate(TextBox53) < Date Then
TextBox53.BackColor = vbRed
Me.TextBox53.SetFocus
Me.TextBox53.SelStart = 0
Me.TextBox53.SelLength = Len(Me.TextBox53)
End If
ElseIf IsDate(TextBox54) Then
If CDate(TextBox54) < Date Then
TextBox54.BackColor = vbRed
Me.TextBox54.SetFocus
Me.TextBox54.SelStart = 0
Me.TextBox54.SelLength = Len(Me.TextBox54)
End If
ElseIf IsDate(TextBox55) Then
If CDate(TextBox55) < Date Then
TextBox55.BackColor = vbRed
Me.TextBox55.SetFocus
Me.TextBox55.SelStart = 0
Me.TextBox55.SelLength = Len(Me.TextBox55)
End If
ElseIf IsDate(TextBox56) Then
If CDate(TextBox56) < Date Then
TextBox56.BackColor = vbRed
Me.TextBox56.SetFocus
Me.TextBox56.SelStart = 0
Me.TextBox56.SelLength = Len(Me.TextBox56)
End If
ElseIf IsDate(TextBox57) Then
If CDate(TextBox57) < Date Then
TextBox57.BackColor = vbRed
Me.TextBox57.SetFocus
Me.TextBox57.SelStart = 0
Me.TextBox57.SelLength = Len(Me.TextBox57)
End If
ElseIf IsDate(TextBox58) Then
If CDate(TextBox58) < Date Then
TextBox58.BackColor = vbRed
Me.TextBox58.SetFocus
Me.TextBox58.SelStart = 0
Me.TextBox58.SelLength = Len(Me.TextBox58)
End If
ElseIf IsDate(TextBox59) Then
If CDate(TextBox59) < Date Then
TextBox59.BackColor = vbRed
Me.TextBox59.SetFocus
Me.TextBox59.SelStart = 0
Me.TextBox59.SelLength = Len(Me.TextBox59)
End If
ElseIf IsDate(TextBox60) Then
If CDate(TextBox60) < Date Then
TextBox60.BackColor = vbRed
Me.TextBox60.SetFocus
Me.TextBox60.SelStart = 0
Me.TextBox60.SelLength = Len(Me.TextBox60)
End If
ElseIf IsDate(TextBox61) Then
If CDate(TextBox61) < Date Then
TextBox61.BackColor = vbRed
Me.TextBox61.SetFocus
Me.TextBox61.SelStart = 0
Me.TextBox61.SelLength = Len(Me.TextBox61)
End If
ElseIf IsDate(TextBox62) Then
If CDate(TextBox62) < Date Then
TextBox62.BackColor = vbRed
Me.TextBox62.SetFocus
Me.TextBox62.SelStart = 0
Me.TextBox62.SelLength = Len(Me.TextBox62)
Else
UserForm2.Hide
UserForm3.Show
End If
End If
End Sub
End If
End if

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Else bei If (wird nicht ausgeführt)
31.10.2017 14:47:09
Werner
Hallo Holger,
hier fehlt am Ende ein End If
ElseIf IsDate(TextBox62) Then
If CDate(TextBox62) 

Weiter unten mußt du dann natürlich ein End If entfernen.
So wie du es jetzt hast, kommst du in den Else Zweig wenn das Datum in TextBox 62 größer/gleich dem Tagesdatum ist - oder ist das so gewollt?
Gruß Werner
besser wäre eine Beispieldatei
31.10.2017 14:48:47
Tino
Hallo,
nach End Sub kann kein End If folgen.
Besser wäre eine Beispieldatei mit der man sich alles anschauen und testen kann!
Gruß Tino
AW: Problem mit Else bei If (wird nicht ausgeführt)
31.10.2017 14:50:47
Nepumuk
Hallo Holger,
dein Userform3 wird nur angezeigt wenn alle TextBoxen außer der mit dem Index 62 kein Datum enthält.
Zum besseren Verständnis, sobald eine TextBox vor der letzten ein Datum enthält, geht das If in den ElseIf - Zweig und alle anderen folgenden Abfragen werden übersprungen.
Gruß
Nepumuk
Anzeige
AW: Problem mit Else bei If
31.10.2017 15:08:06
Holger
Zuerst mal danke für eure Anregungen/ Hinweise.
Mit dem "End If" nach "End Sub" ist ein Fehler der sich eingeschlichen hatte, nach dem ich mehrere Varianten probiert hatte.
Was ist gewollt?
- Eine Prüfung der Userformen 46-62 auf leere und aktivierte TextBoxen (oberer Teil des Codes - klappt soweit)
- Eine Prüfung der Userformen 46-62 auf eingetragene Daten in der Vergangenheit. Wenn dies der Fall ist, wird die betreffende TextBox markiert/ farblich hinterlegt.
Das Else soll ausgeführt werden, wenn alles korrekt ist, d.h. wenn es keine aktivierten+leeren TextBoxen gibt und wenn es aktivierte und gefüllte TextBoxen gibt, muss das eingegebene Datum > heute sein.

Zitat:
"dein Userform3 wird nur angezeigt wenn alle TextBoxen außer der mit dem Index 62 kein Datum enthält.
Zum besseren Verständnis, sobald eine TextBox vor der letzten ein Datum enthält, geht das If in den ElseIf - Zweig und alle anderen folgenden Abfragen werden übersprungen."
Das ist nicht gewollt.
Vorher hatte ich wie folgt überprüft:
If TextboxXX.Enabled = True und cdate(TextboxXX) Das klappte auch, allerdings nur, wenn ein Datum eingetragen war. Wenn die TextBox leer war, kam ein
Laufzeitfehler (13).
Deswegen der Versuch mit dem verschachtelten If. ...
Gruß,
Holger
Anzeige
AW: Problem mit Else bei If
31.10.2017 16:02:35
Nepumuk
Hallo Holger,
teste mal:
Private Sub CommandButton1_Click()
    
    Dim lngIndex As Long
    
    For lngIndex = 46 To 62
        
        With Controls("TextBox" & CStr(lngIndex))
            
            If .Enabled Then
                
                If .Text = vbNullString Then
                    
                    .BackColor = vbRed
                    .SetFocus
                    MsgBox "Bitte Schulungsdaten eintragen"
                    Exit Sub
                    
                Else
                    
                    .BackColor = vbWhite
                    
                End If
                
                If Not IsDate(.Text) Then
                    
                    .BackColor = vbRed
                    .SetFocus
                    .SelStart = 0
                    .SelLength = .TextLength
                    MsgBox "Bitte ein gültiges Datum eingeben"
                    Exit Sub
                    
                Else
                    
                    If CDate(.Text) < Date Then
                        
                        .BackColor = vbRed
                        .SetFocus
                        .SelStart = 0
                        .SelLength = .TextLength
                        MsgBox "Das Datum muss in der Zukunft liegen"
                        Exit Sub
                        
                    Else
                        
                        .BackColor = vbWhite
                        
                    End If
                End If
            End If
        End With
    Next
    
    UserForm2.Hide
    UserForm3.Show
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Problem mit Else bei If
31.10.2017 16:13:42
Holger
Also ich habe echt lange selber probiert...
Als Anfänger muss man wohl manchmal bluten.
ABER:
Es funktioniert jetzt. Wahnsinn...
Und es hilft mir auch für die Zukunft. Ich kann wahrscheinlich den halben Code in dem Projekt einsparen.
Vielen Dank und schöne Feiertage!

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige