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

ersten Zeilen und letzte löschen

ersten Zeilen und letzte löschen
05.10.2021 15:22:54
Vanessa
Hallo,
da bin ich mal wieder und probiere mal was zu basteln.
Dabei möchte ich per VBA folgende Erleichterung:
ich möchte in sheet(1) bis sheet(6) jeweils die ersten 4 Zeilen gelöscht haben und die dazu noch jeweils die letzte beschrieben Zeile
gibt es so etwas in der Art:
Sheets(1).Select Rows("1:4").Select
Selection.Delete Shift:=xlUp
If WorksheetFunction.CountA(.Cells) > 0 Then
.Cells.Find(What:="*", _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).EntireRow.Delete
End If
nur ebend für alle 6 Arbeitsblätter?
sorry, ich hoffe ihr versteht mich. :)
LG
Vanessa

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ersten Zeilen und letzte löschen
05.10.2021 15:50:10
Klaus
Hallo Vanessa,
das hier löscht dir die ersten vier Zeilen aus ALLEN Blättern der Mappe:

Sub test()
Dim blatt As Worksheet
For Each blatt In Worksheets
blatt.Rows("1:4").Delete Shift:=xlUp
Next blatt
End Sub
(geht auch eleganter, aber zum verstehen ist es so besser).
Den zweiten Teil mit CountA kann ich nicht bearbeiten, da dieser Referenzierungen enthält (PUNKT-Cells) die du nicht zeigst, vielleicht kopierst du das ganze Makro oder sogar eine Mustertabelle hier hinein?
AW: ersten Zeilen und letzte löschen
05.10.2021 15:53:21
Daniel
Kommt darauf an.
Zeilen löschen geht prinzipiell auf mehreren Blättern gleichzeitig, würdr aber erfordern dass es immer die gleichen Zeilen sind, auch die untere.
Wie das geht kannst du mit dem Recorder rausfinden. Markiere die Blätter nacheinander mit gedrückter STRG-Taste und führe dann die Aktion durch.
Sollte die untere Zeile auf jedem Blatt eine andere sein (andere Zeilennummer), musst du jedes Blatt einzeln bearbeiten, wenn möglich in einer Schleife.

for i = 1 to 6
With Sheets(i)
.Range("1:4").delete
If WorksheetFunction.CountA(.Cells) > 0 Then
.Cells.Find(What:="*", _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).EntireRow.Delete
End If
End With
Next
Gruß Daniel
Anzeige
AW: ersten Zeilen und letzte löschen
06.10.2021 08:11:14
Vanessa
Hallo,
und besten Dank! Macht genau das was es tun soll.
Jetzt steht noch ein Thema an was nicht ganz sauber läuft.
Ich möchte gern die Werte der Spalten E,F,G in H addieren.
Das habe ich wie folgt gelöst:
Dim LetzteZeile As Long
LetzteZeile = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
Range("H1").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-3]+RC[-2]+RC[-1])"
Selection.AutoFill Destination:=Range("H1:H" & LetzteZeile), Type:=xlFillDefault
Range("H1:H" & LetzteZeile).Select
Allerdings rechnet er 6 weitere Zeilen in dem kein Wert drin steht.
Nun könnte ich zwar hinter Row eine -6 schreiben aber ich verstehe dennoch nicht warum das passiert.
Habt ihr eine Idee?
LG
Vanessa
Anzeige
OT: Select
06.10.2021 08:17:35
Klaus
Moin Vanessa,
ein Tipp: Gewöhn dir an, die SELECT aus dem Makrorekordercode zu entfernen. Außerdem sind einige Funktionen wie Autofill in VBA unnötig. So wird aus:

Range("H1").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-3]+RC[-2]+RC[-1])"
Selection.AutoFill Destination:=Range("H1:H" & LetzteZeile), Type:=xlFillDefault
Range("H1:H" & LetzteZeile).Select
Viel schlanker, lesbarer und schneller:

Range("H1:H" & LetzteZeile).FormulaR1C1 = "=SUM(RC[-3]+RC[-2]+RC[-1])"
LG,
Klaus M.
Anzeige
AW: OT: Select
06.10.2021 08:25:27
Vanessa
wow,
gefällt mir auch viel, viel besser! Dankeschön.
Aber wieso rechnet er noch in 6 weitereren Zeilen obwohl die leer sind?
Bei mir sieht das Ergebnis, wenn beispielsweise Werte nur in den ersten 4 Zeilen enthalten sind dann so aus:
531
646
973
528
0
0
0
0
0
0
LG
Vanessa
AW: OT: Select
06.10.2021 08:54:45
Klaus
Ohne Musterdatei nur schwer zu erraten, Vanessa. Ich kann nur vermuten, dass "letzteZeile" auf einer falschen Spalte liegt, die 6 Einträge mehr hat als gewünscht.
Ich klinke mich hier aus, mach bitte im Zweig mit Daniel weiter. Der hat eh deutlich mehr auf dem Kasten als ich und kann dir sicherlich besser helfen.
LG,
Klaus M.
Anzeige
AW: OT: Select
06.10.2021 11:05:40
Vanessa
Besten Dank Klaus, du hast mir sehr weitergeholfen!
AW: ersten Zeilen und letzte löschen
06.10.2021 08:31:45
Daniel
schwer zu sagen, ohne die Datei zu kennen.
Du arbeitest mit Select. Bist du auf dem richtigen Tabellenblatt?
Sind die Zellen wirklich leer oder enthalten sie eine Formel mit dem Ergebnis ""?
Diese sehen zwar leer aus, sind es aber nicht.
Kritisch wirds auch, wenn man eine Zelle mit so einer Formel kopiert und als Wert einfügt.
Dann ist auch die Formel weg, aber die Zelle enthält immer noch den Text "" und ist damit nicht leer.
probiers mal, die letzte Zeile wie in deinem ersten Posting mit .FIND zu ermitteln, zur Sicherheit suchst du nach "?*" um nach Werten zu suchen, die mindestens ein Zeichen enthalten. Gesucht werden muss in Werten, nicht in Formeln, also mit Parameter "LookIn:=xlvalues"
bzw Autofill braucht man in VBA nicht.
man kann die Formel in alle Zellen gleichzeitig schreiben.
Relative Zellbezüge werden dabei richtig übernommen.

Range("H1:H" & LetzteZeile).FormulaR1C1 = "=SUM(RC[-3]+RC[-2]+RC[-1])"
da entspricht in Excel der Vorgehensweise: erst alle Zellen markieren, dann Formel eingeben und Eingabe mit STRG+ENTER abschließen.
Gruß Daniel
Anzeige
AW: ersten Zeilen und letzte löschen
06.10.2021 11:25:31
Vanessa
Hallo Daniel,
die Zellen erhalten Formeln mit dem Ergebnis 0, weil in den zu summierenden Zellen kein Wert steht =SUMME(E1+F1+G1).
Ich werde wohl LetzteZeile = Cells(Rows.Count, 5).End(xlUp).Row - 6 schreiben damit die 6 Formeln mit ergebnis 0 nicht mit angezeigt werden.
Vieln Dank und wenn du noch eine Idee hast würde ich mich freuen. :)
LG Vanessa

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige