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

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


		

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?
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..
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige