Clever-Excel-Forum

Normale Version: If / ElseIf mit zusätzlicher If-Verschachtelung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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 
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