Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

If / ElseIf mit zusätzlicher If-Verschachtelung
#1
Hallo zusammen,

ich habe eine wahrscheinlich simple Frage, die ich aber nicht zufriedenstellend gelöst bekomme. Ich habe nachfolgenden Code erstelle (Auszug):

Code:
Sub Auswerten()

Dim i As Integer
Dim jx As Integer

    For i = 1 To 10
       
        For jx = 1 To 10
       
        If Worksheets("Tabelle1").Cells(jx, 30) = Worksheets("Tabelle1").Cells(i, 12) Then
            If Worksheets("Tabelle1").Cells(i, 9) = "Fussball" And Worksheets("Tabelle1").Cells(i, 10) = "Handball" Then
                If Worksheets("Tabelle1").Cells(jx, 32) = "x" Then
                Worksheets("Tabelle1").Cells(i, 16) = "Rasen"
                Worksheets("Tabelle1").Cells(i, 17) = "Tor"
                End If
            End If

        ElseIf Worksheets("Tabelle1").Cells(jx, 30) = Worksheets("Tabelle1").Cells(i, 12) Then
            If Worksheets("Tabelle1").Cells(i, 9) = "Tennis" And Worksheets("Tabelle1").Cells(i, 10) = "Tischtennis" Then
                If Worksheets("Tabelle1").Cells(jx, 35) = "x" Then
                Worksheets("Tabelle1").Cells(i, 16) = "Schläger"
                Worksheets("Tabelle1").Cells(i, 17) = "Netz"
                End If
            End If
       
        Else
        End If
        Next
    Next

End Sub

Was ich nicht verstehe ist folgendes: Gehe ich den Code durch und lande in der ersten "If-Bedingung", springt er (wenn diese nicht erfüllt wird) automatisch in die nächste "ElseIf" Zeile. Soll ja auch so sein.
Wird die erste "If-Bedingung" jedoch erfüllt, und er springt in die nächste "If"-Bedingung darunter (hier Prüfung ob Wörter "Fussball" und "Handball" vorhanden), springt er anschließend wenn diese Bedingung nicht erfüllt wird nicht zur nächsten "ElseIf" Zeile, sondern an das Ende des Codes. Wie kann ich das korrigieren?

Was eine Möglichkeit wäre, ist es wie folgt anzupassen:

Code:
Sub Auswerten()

Dim i As Integer
Dim jx As Integer

    For i = 1 To 10
       
        For jx = 1 To 10
       
        If Worksheets("Tabelle1").Cells(jx, 30) = Worksheets("Tabelle1").Cells(i, 12) And Worksheets("Tabelle1").Cells(i, 9) = "Fussball" And Worksheets("Tabelle1").Cells(i, 10) = "Handball" And Worksheets("Tabelle1").Cells(jx, 32) = "x" Then
                Worksheets("Tabelle1").Cells(i, 16) = "Rasen"
                Worksheets("Tabelle1").Cells(i, 17) = "Tor"

        ElseIf Worksheets("Tabelle1").Cells(jx, 30) = Worksheets("Tabelle1").Cells(i, 12) And Worksheets("Tabelle1").Cells(i, 9) = "Tennis" And Worksheets("Tabelle1").Cells(i, 10) = "Tischtennis" And Worksheets("Tabelle1").Cells(jx, 35) = "x" Then
                Worksheets("Tabelle1").Cells(i, 16) = "Schläger"
                Worksheets("Tabelle1").Cells(i, 17) = "Netz"
       
        Else
        End If
        Next
    Next

End Sub

Es wurmt mich allerdings, dass ich es mit dem ersten Ansatz nicht gelöst bekomme und bei vielen "Und"-Verknüpfungen wird es dann ja auch irgendwann ziemlich unübersichtlich.
Das geht doch bestimmt auch mit dem ersten Ansatz, oder?

Viele Grüße
Sebbo
Antworten Top
#2
PHP-Code:
Dim i As Integer
Dim jx 
As Integer
   
For 1 To 10
      
For jx 1 To 10
         
If Worksheets("Tabelle1").Cells(jx30) = Worksheets("Tabelle1").Cells(i12Then
            
If Worksheets("Tabelle1").Cells(jx32) = "x" Then
               Worksheets
("Tabelle1").Cells(i16) = "Rasen"
               Worksheets("Tabelle1").Cells(i17) = "Tor"
            End If
            If Worksheets("Tabelle1").Cells(i9) = "Tennis" And _
            Worksheets
("Tabelle1").Cells(i10) = "Tischtennis" And _
            Worksheets
("Tabelle1").Cells(jx35) = "x" Then
               Worksheets
("Tabelle1").Cells(i16) = "Schläger"
               Worksheets("Tabelle1").Cells(i17) = "Netz"
            End If
         End If
      Next
   Next
End Sub 
Antworten Top
#3
Hallo,

Du prüfst in der If-Bedingung und in der ElseIf-Bedingung jeweils dasselbe. Wieso das denn?

Code:
Sub Auswerten()

Dim i As Integer
Dim jx As Integer

    For i = 1 To 10
        
        For jx = 1 To 10
        
        If Worksheets("Tabelle1").Cells(jx, 30) = Worksheets("Tabelle1").Cells(i, 12) Then
            If Worksheets("Tabelle1").Cells(i, 9) = "Fussball" And Worksheets("Tabelle1").Cells(i, 10) = "Handball" Then
                If Worksheets("Tabelle1").Cells(jx, 32) = "x" Then
                Worksheets("Tabelle1").Cells(i, 16) = "Rasen"
                Worksheets("Tabelle1").Cells(i, 17) = "Tor"
                End If
            End If

            If Worksheets("Tabelle1").Cells(i, 9) = "Tennis" And Worksheets("Tabelle1").Cells(i, 10) = "Tischtennis" Then
                If Worksheets("Tabelle1").Cells(jx, 35) = "x" Then
                Worksheets("Tabelle1").Cells(i, 16) = "Schl?ger"
                Worksheets("Tabelle1").Cells(i, 17) = "Netz"
                End If
            End If
        
        'Else  'wenn da eh nichts ist, kannst Du es l?schen
        End If
        Next
    Next

End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste