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

Do Loop wird verlassen obwohl Bed. n. erfüllt

Do Loop wird verlassen obwohl Bed. n. erfüllt
Christian
Hallo zusammen,
ich habe folgenden code:
Option Explicit
Sub testLoop()
Dim rngFindBereich As Range
Dim rngFind As Range
Dim firstAdress
Dim Groesse As String
Dim Bestand As String
Dim Sparte As String
Groesse = "BA0005010101"
Bestand = "Endbestand GJ"
Sparte = "Wert Leben"
Set rngFindBereich = Worksheets("Umsetzungstabelle").Range("G2:G3134")
With rngFindBereich
Set rngFind = .Find(Groesse, LookIn:=xlValues)
If Not rngFind Is Nothing Then
firstAdress = rngFind.Address
Do
Set rngFind = .FindNext(rngFind)
Loop While Not rngFind Is Nothing And rngFind.Address  firstAdress And rngFind.Offset( _
0, 1)  Bestand And rngFind.Offset(0, 2)  Sparte
MsgBox rngFind
MsgBox rngFind.Offset(0, 1).Value
MsgBox rngFind.Offset(0, 2).Value
End If
End With
End Sub

Die Bedingung rngFind.Offset(0, 1) Bestand ist nicht erfüllt und trotzdem springt er aus der Schleife.
Es gibt eine Zeile im Tabellenblatt die alle Bedingungen erfüllt.
Hab heute in der Arbeit versucht rauszufinden warum und bin dann frustriert nach Hause gegangen und komme jetzt auch nicht weiter.
Weiss jemand was da los ist?
Viele Grüße und vielen Dank!
Chris

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Sorry - wir kennen leider Deine Tabelle nicht _oT
24.03.2010 20:29:39
NoNet
_oT = "ohne Text"
PS : Doch Text ;-) : Lade bitte Deine (DEMO-)Tabelle hoch....
AW: Sorry - wir kennen leider Deine Tabelle nicht _oT
24.03.2010 21:02:10
Daniel
HI
ist jetzt zwar keine Hilfe, aber Bedingungen mit AND und sind nicht immer ganz leicht ihrer Logik zu durchschauen, manchmal hiflt es, statt "Loop While" das "Loop Until" zu verwenden, weil sich dadurch eine einfacherer Logik ergeben kann.
oder man verwendet das Schleifeninterne "Exit Do", was natürlich auch mehrfach vorkommen kann, so daß man unterschiedliche Abbruchbedingungen nicht in einen Term zusammenfassen muss sondern einzeln darstellen kann.
ansonsten ist das "if not rngFind is Nothing" zur Prüfung des Schleifenabbruchs überflüssig, weil die bedingung ist ja immer erfüllt, dafür sorgt das IF vor der Schleife.
Gruß Daniel
Anzeige
noch offen vergessen
24.03.2010 22:01:07
Christian
ot
Statt <> AND <> ... NOT = AND =
24.03.2010 22:45:35
Renee
Hi Christian,
Daniel hatte schon recht mit seiner Aussage, dass die Logik mit und AND oft falsch verstanden wird.
Mein Tipp: Formuliere immer auf = und verneine dann das Ganze, also:
Loop While Not (rngFind.Address = firstAdress And rngFind.Offset(0, 1) = Bestand And rngFind.Offset(0, 2) = Sparte)
GreetZ Renée
AW: Statt <> AND <> ... NOT = AND =
25.03.2010 08:37:46
Christian
Danke euch beiden, jetzt gehts
Grüße Christian
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige