Herbers Excel-Forum - das Archiv

Fehler bei Bedingungsabfrage in Schleife

Bild

Betrifft: Fehler bei Bedingungsabfrage in Schleife
von: Peter
Geschrieben am: 15.12.2003 12:46:54
Hallo Forum,
ich erhalte merkwürdige Ergebnisse bei der Abfrage.
Kann sich jemand das mal ansehen?

Danke Peter

~begin~



Sub MitarbEintragen()
Dim laR1 As Long, laR2 As Long, i As Long
'>>>>zur Probe so festgelegt
' AnfMonat = DateSerial(Year(Date), 6, 1)
'ActiveSheet.Name = Format(AnfMonat, "mmm.yyyy")
'Sheets(Worksheets.Count - 1).Activate
'>>>Mitarbeiterdaten übeberprüfen und eintragen
laR1 = Sheets("Mitarbeiter").Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To laR1
'1.Abfrage
If Format(Sheets("Mitarbeiter").Cells(i, 5).Value, "mmm.yyyy") >= ActiveSheet.Name _
Then laR2 = Cells(Rows.Count, 2).End(xlUp).Row
'2.Abfrage
If Format(Sheets("Mitarbeiter").Cells(i, 5).Value, "mmm.yyyy") <= ActiveSheet.Name _
Then laR2 = Cells(Rows.Count, 2).End(xlUp).Row
If laR2 < 7 Then laR2 = 7
Cells(laR2 + 1, 2).Value = _
Sheets("Mitarbeiter").Cells(i, 2).Value
Cells(laR2 + 1, 1).Value = _
Left(Sheets("Mitarbeiter").Cells(i, 1).Value, 3)
Next i
End Sub


~end~
Bild

Betrifft: AW: Fehler bei Bedingungsabfrage in Schleife
von: WernerB.
Geschrieben am: 15.12.2003 14:26:03
Hallo Peter,

warum machst Du überhaupt zwei Abfragen? Du vergleichst doch einen Wert in der ersten Abfrage, ob er größer oder gleich dem anderen Wert ist und in der zweiten Abfrage, ob er kleiner oder gleich dem anderen Wert ist. Eine der drei Bedingungen (kleiner, größer, gleich) muss ja immer zutreffen. Auch was dann geschehen soll (Then ...), ist identisch.
Von daher brauchst Du m.E. keine Abfragen, sondern dafür nur diese eine Zeile:

laR2 = Cells(Rows.Count, 2).End(xlUp).Row

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).
Bild
Excel-Beispiele zum Thema " Fehler bei Bedingungsabfrage in Schleife"
Fehlermeldung #NV ausblenden Fehlermeldung abfangen
Fehler in Workbook_Open-Prozedur abfangen Fehlermeldung #DIV/0! verhindern
Fehler entfernen Fehlermeldung abfangen und in sequentielle Datei schreiben
Fortlaufende Suche unter Vermeidung eines Laufzeitfehlers VBA-Fehlermeldungen auflisten
Alle Zellen mit der #BEZUG!-Fehlermeldung auswählen Zahlenstring mit Formel auslesen und Fehlermeldung verhindern