PDA

Vollständige Version anzeigen : Loop beenden mit mehreren Bedingungen


Muecke.1982
21.09.2016, 18:57
Hallo miteinander,

ich habe einen Loop erstellt der von sich aus abbricht wenn die Zelle A+n leer ist.

Ich möchte jedoch das der Loob abbricht wen eine von mehrere zellen Leer ist.
es Handeslt sich um die Zellen (A+i, E+i und G+i)

hat jemand eine Idee wie ich alle drei Bedingungen in den Loop hinein bekomme?



i = 1
Do While Cells(i + 14, 1).Value <> ""
...
Loop

haklesoft
21.09.2016, 19:11
Du könntest die Längen der drei Zellen miteinander multiplizieren. Kommt 0 raus, ist eine davon leer.

Muecke.1982
21.09.2016, 19:14
warum auch immer, ich habe vorhin immer einen Fehler bekommen, jetzt nach dem ich es erneut versucht habe klappt es.

habe wohl einen Schreibfehler vorhin gehabt :-(


i = 1
Do While Range("A" & i + 13) <> "" _
And Range("B" & i + 13) <> "" _
And Range("E" & i + 13) <> "" _
And Range("G" & i + 13) <> ""
...
i = i + 1
Loop

R J
21.09.2016, 19:49
Hi Muecke,

Ich möchte jedoch das der Loob abbricht wen eine von mehrere zellen Leer ist.

Dann darfst Du aber keine UND Verknüpfung nehmen, denn bei Deinem UND trifft die Bedingung nur dann zu wenn alle 3 Zellen leer sind.
Also, entweder Deine Frage war falsch formuliert oder Deine Bedingung ist es jetzt. Du könntest auch mal über Haklesoft's Vorschlag nachdenken...

Muecke.1982
21.09.2016, 20:05
hallo RJ,

auch wenn ich das unheimlich ungern mache jemanden zu widersprechen, doch der Loop macht genau das was ich mochte.

Wenn eine der Zellen Leer ist wird der Loop beendet.

das Zauberwort hierbei ist while
while-Schleifen wiederholen Anweisungen, solange die Bedingung true liefert. Wenn die Bedingung bei der ersten Abfrage nicht true liefert, wird die while-Schleife gar nicht erst ausgeführt.


ich habe eine Musterdatei angehängt.

Hasso
22.09.2016, 10:10
Dann darfst Du aber keine UND Verknüpfung nehmen, denn bei Deinem UND trifft die Bedingung nur dann zu wenn alle 3 Zellen leer sind. Ich lese aus dem Code, dass die Bedingung zutrifft, wenn alle Zeilen nicht leer sind:i = 1
Do While Range("A" & i + 13) <> "" _
And Range("B" & i + 13) <> "" _
And Range("E" & i + 13) <> "" _
And Range("G" & i + 13) <> ""
...
i = i + 1
LoopMeiner Meinung nach kann man sowohl mit And als auch mit Or lösen.

Oge
22.09.2016, 14:28
Hallo,

nach den Regeln der Aussagenlogik ist:

Nicht(Nicht(A) Und Nicht(B)) = Nicht(Nicht(A)) Oder Nicht(Nicht(B)) = A Oder B

haklesoft
22.09.2016, 22:18
Frei nach W.S.: Nicht Und oder Nicht Oder ist hier die Frage! Sowas muss ich immer erst durchprobieren bis ich es glaube. Mit einer schlichten Multiplikation gehe ich dem aus dem Weg. :mrcool: