Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

For-Schleife mit ElseIf-Anweisungen

Forumthread: For-Schleife mit ElseIf-Anweisungen

For-Schleife mit ElseIf-Anweisungen
05.02.2018 13:02:42
Kazuya
Hallo zusammen :)
ich beschäftige mich seit ca. drei Tagen mit VBA und habe mich auch dementsprechend bisschen eingearbeitet. Jedoch hänge ich derzeit an einem kleinen Denkfehler.
Und zwar habe ich eine dynamische For-Schleife erstellt, die eine Tabelle (in einem anderen Tabellenblatt) mit insgesamt drei Spalten durchläuft und die Eingabe auf Übereinstimmung prüft. Jetzt habe ich jedoch weitere fünf Bedingungen:
Sollte die Eingabe mit dem Wert in der Tabelle übereinstimmen und zusätzlich ein "J" in der zweiten Spalte enthalten dann soll er mir meinen Befehl durchführen.
Dasselbe "Spiel" führe ich für die Bedingungen "N", "K" und "P" durch.
Die Schleife macht auch das was sie soll, nur möchte ich eine letzte Anweisung die mir sagt, dass der Wert der Eingabe nicht in meiner Tabelle gefunden wird.
Ich habe bereits alles mögliche ausprobiert, komme jedoch nicht auf diesen Denkfehler.
Vielleicht könnt ihr mir da weiterhelfen?
Hier mein Code:

Sub Abfrage()
Dim x As Long
Dim zeilen As Long
Dim gruppe As String
'letzte Zeile (in Spalte A) von Abteilungsabfrage ermitteln
zeilen = Worksheets("Abfrage").Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To zeilen
With Worksheets("Abfrage")
If UCase(Worksheets("Tabelle1").Cells(5, 4).Value) = UCase(Worksheets("Abfrage"). _
Cells(x, 1).Value) And .Cells(x, 2).Value = "J" Then
-- mein Code --
Exit For
ElseIf UCase(Worksheets("Tabelle1").Cells(5, 4).Value) = UCase(Worksheets(" _
Abfrage").Cells(x, 1).Value) And .Cells(x, 2).Value = "N" Then
-- mein Code --
Exit For
ElseIf UCase(Worksheets("Tabelle1").Cells(5, 4).Value) = UCase(Worksheets(" _
Abfrage").Cells(x, 1).Value) And .Cells(x, 2).Value = "K" Then
-- mein Code --
Exit For
ElseIf UCase(Worksheets("Tabelle1").Cells(5, 4).Value) = UCase(Worksheets(" _
Abfrage").Cells(x, 1).Value) And .Cells(x, 2).Value = "P" Then
-- mein Code --
Exit For
ElseIf UCase(Worksheets("Tabelle1").Cells(5, 4).Value)  .Cells(x, 1).Value  _
Then
MsgBox "Abteilung nicht in der Matrix vorhanden"
Exit For
End If
End With
Next
End Sub
Ich hoffe es ist einigermaßen lesbar


		
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For-Schleife mit ElseIf-Anweisungen
05.02.2018 13:18:43
Rudi
Hallo,
so?
Sub Abfrage()
Dim x As Long
Dim zeilen As Long
Dim gruppe As String
Dim strMatch As String
'letzte Zeile (in Spalte A) von Abteilungsabfrage ermitteln
zeilen = Worksheets("Abfrage").Cells(Rows.Count, 1).End(xlUp).Row
strMatch = UCase(Worksheets("Tabelle1").Cells(5, 4).Value)
For x = 2 To zeilen
With Worksheets("Abfrage")
If UCase(.Cells(x, 1).Value) = strMatch Then
Select Case UCase(.Cells(x, 2).Value)
Case "J"
'Code1
Case "N"
'Code2
Case "K"
'Code3
Case "P"
'Code4
Case Else
MsgBox "Abteilung nicht in der Matrix vorhanden"
End Select
End If
End With
Next x
End Sub

Gruß
Rudi
Anzeige
AW: For-Schleife mit ElseIf-Anweisungen
05.02.2018 14:00:21
Kazuya
Hallo Rudi,
erstmals Danke für deine Mühe!
An sich funktionieren die einzelnen Case's, bis auf "Case Else" da will er gar nicht rein hüpfen.
Hast du eine weitere Idee?
AW: For-Schleife mit ElseIf-Anweisungen
05.02.2018 13:44:34
Daniel
Hi
du verlässt im Erfolgsfall die Schleife vorzeitig mit EXIT FOR.
ob dies eingetreten ist oder nicht, kannst nach dem NEXT ganz einfach ermitteln, indem du den Schleifenzähler (x) mit dem Schleifenendwert (zeilen) vergleichst.
wird die For-Next-Schleife vollständig durchlaufen, ist der Schleifenzähler am Ende immer größer als der Schleifenendwert.
bei einem vorzeitigem Abbruch mit Exit For ist er kleiner oder gleich dem Schleifendendwert
(bei rückwärtslaufenden Schleifen ist größer/kleiner natürlich vertauscht)
dh du programmierst nach dem NEXT folgendes um deine Meldung zu erhalten:
If x > Zeile Then Msgbox "Eintrag nicht gefunden oder keine Kennung J, N, P, K vorhanden"
Gruß Daniel
Anzeige
AW: For-Schleife mit ElseIf-Anweisungen
05.02.2018 14:14:29
Kazuya
Hi Daniel,
an sich habe ich verstanden was du meinst, aber irgendwie mag er nicht.
Bei bewusster Falscheingabe, sprich der Wert ist nicht in der Tabelle, tut er nichts.
Bei richtiger Eingabe führt er meinen Befehl aus und bringt zusätzlich die MsgBox, die er eigentlich bei Falscheingabe bzw. bei Eingabe eines nicht vorhandenen Wertes, hervorbringen soll.
Danke für deine Hilfe, aber vielleicht hast du noch eine Idee woran es liegen könnte?
Anzeige
AW: For-Schleife mit ElseIf-Anweisungen
05.02.2018 14:28:10
Kazuya
Ah.. Moment... Habe "Zeile" von dir übernommen.. Bei mir heißt die Variable natürlich "zeilen"
Scheint zu funktionieren! Super ich danke dir vielmals! Eigentlich ganz simple..
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige