Liebe Experten,
ich bin absolut auf Eure Hilfe angewiesen! Ich brauche Hilfestellung zum Entwickeln eines Excel-Makros.
Hier ist meine Problemstellung (etwas vereinfacht, aber es ist im Prinzip genau das was ich brauche):
"Ist der Zahlenwert der 3. (Spalten-) Zelle (auf der ich mich gerade befinde) > 4000, dann soll die Reihe unter mir und die, auf der ich gerade bin, geloescht werden.
Ist der Wert jedoch
"Ist der Zahlenwert der 3. (Spalten-) Zelle (auf der ich mich
gerade befinde) > 4000, dann soll die Reihe unter mir und
die, auf der ich gerade bin, geloescht werden.
Ist der Wert jedoch
Sub roland()
zei = Range(„C65536“).End(xlUp).Row
For n = zei To 1 Step -1
If Cells(n, 3).Value > 4000 Then
Rows(n).Delete
Rows(n).Delete
End If
Next n
End Sub
Gruß
Reinhard
Hallo Roland,
hier meine etwas von Reinhard’s abweichende Lösung
Sub ZeilenLoeschen()
Sollwert = 4000 ' Ist Sollwert überschritten, dann werden Zeilen gelöscht
If MsgBox("Befindet sich der Cursor auf der 1. zu überprüfenden Zelle?", vbYesNo) = vbNo Then Exit Sub
Adresse = ActiveCell.Address 'Startfeld merken
' Anzahl zu überprüfende Zeilen ermitteln, gesucht wird die letzte nicht leere Zelle in aktueller Spalte
Application.Goto Reference:="R65000C" & ActiveCell.Column
Selection.End(xlUp).Select
AnzahlReihen = ActiveCell.Row
' Positionieren auf Startfeld
Range(Adresse).Select
For I = 1 To AnzahlReihen Step 2
'Wert der aktuellen Zelle überprüfen
If ActiveCell.Value \> Sollwert Then
ActiveCell.Rows("1:2").EntireRow.Select
Selection.Delete Shift:=xlUp
Else
'Cursor 2 Zeilen nach unten bewegen, wenn Zeile nicht gelöscht wurde
ActiveCell.Offset(2, 0).Rows("1:1").EntireRow.Select
End If
ActiveCell.Offset(0, Range(Adresse).Column - 1).Select
Next I
Range(Adresse).Select
End Sub
Gruß
Franz
1000 Dank!!!
Ich bin absolut beeindruckt wie ihr das in so kurzer Zeit habt programmieren koennen!
Ich musste noch ein paar Sachen abaendern, so dass es auf meine speziellen Datensaetze passt-- aber es funktioniert einwandfrei. Ich habe schaetzungsweise 2 Tage Zeit gespart.
Ganz herzlichen Dank!
Roland
OT Letzte Zeile
Application.Goto Reference:=„R65000C“ & ActiveCell.Column
Selection.End(xlUp).Select
AnzahlReihen = ActiveCell.Row
Hallo Franz,
ich würd AnzahlReihen so ermitteln:
AnzahlReihen=range(„c65536“).end(xlup).row
ist doch kürzer, übersichtlicher *find*
Warum benutzt du das nicht? *grübel*
Mein Code hat 2 Fehler.
Er gibt ein falsches Ergebnis wenn in C65536 was drinsteht, okay dann nehme ich
AnzahlReihen=iif(range(„c65536)“", 65536, range(„c65536“).end(xlup).row)
[Excel97 kennt das Iif noch nihct]
Und der zweite Fehler ist noch unwahrscheinlicher deshalb fange ich den nicht ab.
Wüde mich schon interessieren warum du das nicht übernimmst.
Gruß
Reinhard