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

Makro Zeile überspringen

Makro Zeile überspringen
22.04.2022 17:04:49
Bernd
Hallo zusammen,
ich habe bei u.g. Makro das Problem das bei zwei aufeinander folgenden leeren i,27 Zellen nur eine übersprungen wird.
Was mache ich falsch?

Sub Makro()
Dim i As Integer
For i = 2 To 1000
If IsEmpty(Cells(i, 1).Value) Then
i = 1000
Else
If IsEmpty(Cells(i, 27).Value) Then
i = i + 1
End If
'Hier steht weiteres Coding das funktioniert
Next i
End Sub
Danke + Gruß
Bernd

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Zeile überspringen
22.04.2022 17:23:36
ReginaR
Hi,
warum zählst Du i hoch (i=i+1), damit überspringst Du die nächste Zelle-
Gruß Regina
AW: Makro Zeile überspringen
22.04.2022 17:44:34
GerdL
Moin Bernd,
ich schließe mich dem an. Vielleicht kommst du so hin.

Sub Makro2()
Dim i As Long
If IsEmpty(Cells(2, 1)) Or IsEmpty(Cells(3, 1) Then Exit Sub
For i = 2 To Application.Min(1000, Cells(2, 1).End(xlDown).Row)
If Not IsEmpty(Cells(i, 27)) Then
MsgBox "Mach was in Zeile " & i
End If
Next i
End Sub
Gruß Gerd
AW: Makro Zeile überspringen
22.04.2022 17:30:14
onur

For i = 2 To 1000
zählt schon i hoch, dann musst du nicht auch noch

i=i+1
schreiben.
Anzeige
AW: Korrektur
22.04.2022 17:50:43
GerdL
Es fehlte eine Klammer.

Sub Makro2()
Dim i As Long
If IsEmpty(Cells(2, 1)) Or IsEmpty(Cells(3, 1)) Then Exit Sub
For i = 2 To Application.Min(1000, Cells(2, 1).End(xlDown).Row)
If Not IsEmpty(Cells(i, 27)) Then
MsgBox "Mach was in Zeile " & i
End If
Next i
End Sub
Gruß Gerd
AW: Makro Zeile überspringen
22.04.2022 20:54:19
Yal
Hallo Bernd,
wagen wir mal eine Analyse. Gerd hat zwar schon alles geliefert, aber es ist Freitag, Klugscheissertag ;-) (ausserdem mangelt es an interessante Fragen am Feierabend)
For i = 2 To 1000
Es wird angenommen, dass es niemals mehr als 1000 Zeilen zu behandeln gibt.
If IsEmpty(Cells(i, 1).Value) Then
i = 1000
Else

Da ist der "Austiegklausel", um die Sache zu beschleunigen. Es gibt ab der Zeile 2 immer etwas in der Spalte A. Wenn nicht ist das Ende der Liste erreicht. Man zwingt die For-Schleife zu enden, indem i 1000 wird.
Beide zusammen führt dazu, dass man irgendeine Zelle in Spalte A ganz weit unten nehmen könnte und der Sprung nach oben ("End(xlUp)") machen, bis zur letzt befüllte Zelle in der Spalte A. Zwischen A2 und diese Zelle hätten wir dann die ganze Liste:
For i = 2 To Cells(99999, 1).End(xlUp).Row
If IsEmpty(Cells(i, 27).Value) Then
i = i + 1
End If

Wenn die Zelle der beachtete Zeile in Spalte AA (=27) leer ist, sofort auf die nächste springen, um das "Coding, das funktioniert" laufen zu lassen.
Gut gemeint, aber nicht im Sinn von einer stabilen Programmierung: ob die nächste Zelle befüllt ist, wird nicht geprüft.
Besser: das Coding, das funktioniert nur auf "nicht leere Zeilen" anwenden:
If Not IsEmpty(Cells(i, 27).Value) Then
'Hier steht weiteres Coding das funktioniert
End If

Dann ist es alles.

Sub Makro()
Dim i As Integer
For i = 2 To Cells(9999, 1).End(xlUp).Row
If Not IsEmpty(Cells(i, 27)) Then
'Hier steht weiteres Coding das funktioniert
End If
Next i
End Sub
VG
Yal
Anzeige
AW: Makro Zeile überspringen
23.04.2022 08:20:17
Bernd
@all
Vielen Dank für eure Hilfe.
Habe jetzt das Coding von Yal verwendet.
Jetzt habe ich leider ein weiteres Problem.
Wenn ich die u,g, Bedingungen mitgebe wird die Zeile nicht übersprungen
If Not IsEmpty(Cells(i, 27)) And Cells(i, 6) = "Beispiel1" Or Cells(i, 6) = "Beispiel2" Or Cells(i, 6) = "Beispiel3" Or Cells(i, 6) = "Beispiel4" Then
Danke + Gruß
Bernd
AW: Makro Zeile überspringen
23.04.2022 10:25:19
Yal
Hallo Bernd,
der And ist etwa die Multiplikation und Or die Addition. Der "Not" bezieht sich nur auf IsEmpty.
Um das gezielt zu steuern, muss man Klammer setzen.
Du willst wahrscheinlich dass haben

If (Not IsEmpty(Cells(i, 27))) And _
(Cells(i, 6) = "Beispiel1" Or Cells(i, 6) = "Beispiel2" Or Cells(i, 6) = "Beispiel3" Or Cells(i, 6) = "Beispiel4" ) Then
VG
Yal
Anzeige
AW: Makro Zeile überspringen
23.04.2022 11:39:59
GerdL
Moin!
Der Operatorenvorrang bei logischen Vergleichsoperatoren:
Prüfung 1 and Prüfung 2 or Prüfung 3 or Prüfung 4
1 trift zu und 2 trifft zu
oder
3 trifft zu oder 4 trifft zu
mit Klammersetzung: Prüfung 1 and (Prüfung 2 or Prüfung 3 or Prüfung 4)
1 trifft zu
und
(2 trifft zu oder 3 trifft zu oder 4 trifft zu)
Gruß Gerd
AW: Makro Zeile überspringen
23.04.2022 20:23:43
Bernd
Danke Yal.
Dein Coding funktioniert leider nicht (Syntaxfehler)
If (Not IsEmpty(Cells(i, 27))) And _
(Cells(i, 6) = "Beispiel1" Or Cells(i, 6) = "Beispiel2" Or Cells(i, 6) = "Beispiel3" Or Cells(i, 6) = "Beispiel4" ) Then
Wenn ich die Klammer vor Then entferne läuft das Makro aber die leere zeile wird nicht übersprungen.
Anzeige
AW: Makro Zeile überspringen
25.04.2022 09:29:25
Yal
Hallo Bernd,
bitte übernehme in deiner Beschreibung dieselbe Logik, wie bei der Makro-Verarbeitung: es wird nicht "irgendwas" übersprungen. Es wird etwas getan, wenn eine bestimmte Bedingung zutrifft. Diese Bedingung ist durch

(Cells(i, 6) = "Beispiel1" Or Cells(i, 6) = "Beispiel2" Or Cells(i, 6) = "Beispiel3" Or Cells(i, 6) = "Beispiel4" ) And Not IsEmpty(Cells(i, 27))
gegeben. Wenn diese gesamte Ausdruck "wahr" liefert, nur dann wird etwas getan (ich habe den Not IsEmpty am Ende gestellt, um zu verdeutlichen, dass der "Not" nur auf das isempty wirkt.)
Für die Richtigkeit dieses Ausdrucks musst Du selber ran. Lasst die Makro Schritt-Modus laufen und mit dem Maus über den jeweiligen Ausdruck siehst Du was davon wahr ist und was nicht. Du kannst auch Überwachungsausdrücke verwenden, Du kannst auch Variable verwenden und die Lokalfenster während dem Schritt-Lauf offen haben, usw.
Tipp:

Cells(i, 6) Like "Beispiel*"
oder gar

LCase(Cells(i, 6)) Like "beispiel*"
VG
Yal
Anzeige
AW: Makro Zeile überspringen
27.04.2022 11:43:37
Bernd
Vielen Dank Yal.

93 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige