Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Lösche wenn...

Forumthread: Lösche wenn...

Lösche wenn...
30.10.2005 17:50:06
Jartul
Hallo Leute,
habe ein kleines Makro, dass mir eine Tabelle von Inhalten säubert, sind diese kleiner als 0.1.
Wie muss ich das abändern, wenn ich "lösche falls kein Eintrag in spalte 2" die Bedingung sein soll?
danke
jartUl
P.S.:
Hier das makro:

Sub LoescheZeilenBedingt()
Dim i As Long, lz As Long
Dim Bereich As Range
Dim loesch As Boolean
With Sheets("S1") 'Namen anpassen oder 'ActiveSheet'
'letzte beschriebene Zeile ermitteln (maßgeblich hier Spalte A!)
lz = .Range("A65536").End(xlUp).Row
For i = lz To 1 Step -1 'evtl Überschrift berücksichigen (dann To 2)!
loesch = False
'Bereich = Zeile von Spalte 1 bis Spalte 30
'Set Bereich = .Range(.Cells(i, 1), .Cells(i, 30))
'ZÄHLENWENN(...;"<0") in VBA
If WorksheetFunction.CountIf(.Cells(i, 2), "") > 0 Then loesch = True
'Zelle Dx >0,01
'If .Cells(i, 2).Value > 0.001 Then loesch = True
'evtl weitere Bedingungen
If loesch Then .Rows(i).Delete Shift:=xlUp
Next i
End With
End Sub

Das aktive sollte der counter sein. "" versteht er aber nicht und das makro wird nicht ausgeführt mit dem hinweis "index out of range".
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lösche wenn...
30.10.2005 18:10:14
Erich G.
Hallo jartUl (?),
das müsste so funzen (2. Version ist kürzer):

Sub LoescheZeilenBedingt()
Dim i As Long, lz As Long
Dim Bereich As Range
Dim loesch As Boolean
With Sheets("S1") 'Namen anpassen oder 'ActiveSheet'
'letzte beschriebene Zeile ermitteln (maßgeblich hier Spalte A!)
lz = .Range("A65536").End(xlUp).Row
For i = lz To 1 Step -1 'evtl Überschrift berücksichigen (dann To 2)!
loesch = False
'Bereich = Zeile von Spalte 1 bis Spalte 30
'Set Bereich = .Range(.Cells(i, 1), .Cells(i, 30))
'ZÄHLENWENN(...;"<0") in VBA
If IsEmpty(.Cells(i, 2)) Then loesch = True
'Zelle Dx >0,01
'If .Cells(i, 2).Value > 0.001 Then loesch = True
'evtl weitere Bedingungen
If loesch Then .Rows(i).Delete Shift:=xlUp
Next i
End With
End Sub


Sub LoescheZeilenBedingtK()
Dim i As Long, lz As Long
With Sheets("S1") 'Namen anpassen oder 'ActiveSheet'
'    letzte beschriebene Zeile ermitteln (maßgeblich hier Spalte A!)
lz = .Range("A65536").End(xlUp).Row
For i = lz To 1 Step -1 'evtl Überschrift berücksichigen (dann To 2)!
If IsEmpty(.Cells(i, 2)) Then .Rows(i).Delete
Next i
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Lösche wenn...
30.10.2005 18:29:28
Jartul
Super!! Habe versucht mit der CountIf. weiterzumachen und einfach die Bedingung auf "leer" oder sowas zu stellen.
If IsEmpty ist natürlich naheliegender ;-)
Wo gibt es eine Online-Befehlsreferenz/Tutorials, oder komme ich um ein Buch (bzw. die CD von Herber) nicht herum??
danke nochmals!
jartUl
Anzeige
Danke für Rückmeldung!
30.10.2005 18:56:28
Erich G.
Hallo jartUl,
da kommt es sehr darau an, welche Vorkenntnisse du hast und wie tief du in VBA einsteigen willst - Bücher gibt es viele, auf unterschiedlichen Levels und zu unterschiedlichsten Preisen. Da müsstest du selbst schauen, welches Buch zu dir passt.
Die Herber-CDs sind sicher hilfreich, auch online hat Herber viel zu bieten, nicht nur dieses Forum.
Interessant ist auch die VBA-Hilfe. Unter dem Reiter "Inhalt" findest du in den Bereichen "Visual Basic-Konzepte" und "Visual Basic-Sprachverzeichnis" jede Menge Anregungen und Beispiele.
Grüße von Erich aus Kamp-Lintfort
P.S.:
Schau doch doch mal so nebenbei, was bei https://www.herber.de/forum/faq.htm
unter "Die Kommunikation" über NickNames steht...
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige