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

Zeilen löschen per Makrocode

Zeilen löschen per Makrocode
Karsten
Hallo,
Kann mir jemand helfen, überflüssige Zeilen per Makrocode zu löschen?
Die Zeile, in der sich die aktive Zelle, befindet soll immer die 20ste Zeile sein.
Befindet sich die aktive Zelle darunter, sollen ab Zeile 10 soviel Zeilen gelöscht werden, bis die aktive Zelle wieder in Zeile 20 steht.
Ich möchte kurz erklären warum ich das brauche. Bei Dateistart öffnet sich als erstes das Kalenderblatt in dem automatisch die Zeile mit dem heutigen Datum angezeigt wird, in der immer Notizen eingetragen werden. Mit jedem Tag vergrößert sich die Datei dadurch und die Notizen von vor längerer Zeit werden damit überflüssig. Um die Datei möglichst klein zu halten, möchte ich den Abstand nach oben konstant halten. Die oben genannten Zahlen sind nur Beispiele.
Danke für eure Hilfe.
Gruß
Karsten

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zeilen löschen per Makrocode
16.09.2010 10:17:29
JogyB
Hallo Karsten,
Sub ZeilenLöschen()
If Selection.Row > 20 Then
Cells(10, 1).Resize(Selection.Row - 20).EntireRow.Delete
End If
End Sub

Gruß, Jogy
AW: Zeilen löschen per Makrocode
16.09.2010 10:25:11
Karsten
Hallo JogyB,
der Code ging ja schneller als meine ganze Beschreibung.
Besten Dank.
Gruß
Karsten
AW: Zeilen löschen per Makrocode
16.09.2010 10:47:23
Karsten
Hallo JogyB,
jetzt muss ich doch noch mal fragen. Ich doktere schon die ganze Zeit herum, aber komme nicht dahinter, was was ist.
If Selection.Row <b>> 20</b> Then ist klar aktive Zelle muss in Zeile 11 stehen damit es weiter geht.
Cells(<b>10</b>, 1) ab 10 te Zeile wird gelöscht.
Cells(10, <b>1</b>).Resize(Selection.Row <b>- 20</b>).EntireRow.Delete ? kannst du die bitte erklären?
Danke
Gruß
Karsten
Anzeige
AW: Zeilen löschen per Makrocode
16.09.2010 11:25:46
JogyB
Hallo Karsten,
letztendlich läuft es darauf hinaus, durch Löschen von Zellen ab Zeile 10 die aktive Zelle in die 20. zu bekommen.
Also lege ich mal mit
Cells(10,1)
den Startpunkt der Löschaktion auf A10.
Wenn also die aktive Zelle tiefer als die 20. Zelle ist, dann müssen also (Zeilennummer der aktiven Zelle - 20) Zellen gelöscht werden.
Also erweitere ich mit
.Resize(Selection.Row - 20)
den Bereich, z.B. wenn die aktive Zelle in Zeile 25 steht auf eine Höhe von 5 Zeilen, d.h. von A10 auf A10:A14
Nun will ich natürlich ganze Zeilen löschen, daher noch das
.EntireRow
Das macht dann aus den A10:A14 einfach 10:14.
Und mit
.Delete
fliegen die alle raus.
Wobei mir grade auffällt, das die aktive Zelle immer noch in der alten Zeile stehen bleibt. Die könntest Du dann nach der Zeile mit der Löschung einfach mit
Selection.Offset(20 - Selection.Row).Select
noch verschieben.
Gruß, Jogy
Anzeige
AW: Zeilen löschen per Makrocode
16.09.2010 12:26:26
Karsten
Hallo Jogy,
danke für deine Erklärung, aber so ganz steige ich da doch nicht durch.
Cells(10,1) die 1 - ist damit die Spalte A gemeint?
Gruß
Karsten
AW: Zeilen löschen per Makrocode
16.09.2010 13:11:34
EvilRik
Hallo Karsten,
bei Fragen einfach im VBA Editor das Wort markieren z.B. CELLS, dann F1 drücken und da wird ihnen geholfen.
Aber ja, du hast es verstanden:
  • cells(10,1) bedeutet Zeile10 Spalte 1. Alternative könntest du auch cells(10,"A") schreiben

  • Range("B2:C4") könntest du auch so ausdrücken: Range(cells(2,2),cells(4,3))

  • Mit dem cells() Ausdruck kann man schöne Schleifen machen.
    z.B. In den Bereich A1 bis A10 das Wort "Hallo" schreiben. Geht auch anders, aber zur Veranschaulichung sollte dieses Beispiel reichen :)
    ...
    For Zähler=1 to 10
    cells(1,Zähler)="Hallo"
    next Zähler
    ...
    

    Gruß Henrik
    Anzeige
    sry Fehler :) lol
    16.09.2010 13:16:49
    EvilRik
    ups,
    z.B. In den Bereich A1 bis A10 das Wort "Hallo" schreiben. Geht auch anders, aber zur Veranschaulichung sollte dieses Beispiel reichen :)
    Muss natürlich so heißen, hst du aber bestimmt schon gemerkt ;)
    
    For Zähler=1 to 10
    cells(Zähler,1)="Hallo"
    next Zähler
    ...
    

    AW: sry Fehler :) lol
    16.09.2010 20:57:01
    Karsten
    Hallo EvilRik,
    danke. Die Zahlen hinter Cells sind jetzt klar. Mit der Excel-Hilfe konnte ich nicht immer was anfangen. Sie setzt zum Teil doch 'ne Menge Fachwissen voraus. Und ich hab da nicht immer die Zeit.....
    Gruß
    Karsten

    209 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige