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

Alle Sheets in ein neues kopieren

Alle Sheets in ein neues kopieren
01.12.2021 07:03:26
Chris
Hallo Forum,
ich möchte mit folgendes Makro alle Werte aus 4 sheets in ein neues Sheet untereinander kopieren. Dies funktioniert, leider wir beim Kopiervorgang immer der letzte Werte aus allen Sheets im Sheet "Sammlung" überschrieben, so dass 4 Werrte im Sheet Sammlung fehlen.
Wo liegt der Fehler?
Dim i As Integer
Dim LngRow, lngLC As Long, zeile As Long
Sheets.Add(After:=Sheets(4)).Name = "Sammlung"
For i = 1 To 4 'Schleife über 4 Sheets
With Sheets(i)
LngRow = .Range("E:E").Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Row + 1
zeile = Sheets("Sammlung").Cells(Rows.Count, 1).End(xlUp).Row + 1 '*letzte Reihe von unten +1
lngLC = .Cells(3, Columns.Count).End(xlToLeft).Column 'Letzte Spalte ab Spalte A
.Range("E3:E" & LngRow).Resize(, lngLC - 3).Copy
Sheets("Sammlung").Cells(zeile, "A").End(xlUp).PasteSpecial xlPasteValues 'Nur Werte kopieren
next
end with

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Sheets in ein neues kopieren
01.12.2021 07:42:45
MCO
Moin Chris!
Ich hab´s mal ein bissl angepasst.
Der Fehler liegt in der Zeile vom einfügen; Erst ermittelst du die richtige Zeile um dann beim einfügen wieder bis in die letzte benutzte Zeile zu springen.
Nimmt man den Teil der Anweisung raus, ist alles wieder in Ordnung:

Sub sheets_copy()
Dim i As Integer
Dim LngRow As Long, lngLC As Long, zeile As Long
Dim new_sh As Worksheet
Set new_sh = Sheets.Add(After:=Sheets(Sheets.Count))
new_sh.Name = "Sammlung"
For i = 1 To Sheets.Count - 1 'Schleife über 4 Sheets
With Sheets(i)
LngRow = .Range("E:E").Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Row + 1
zeile = new_sh.Cells(Rows.Count, 1).End(xlUp).Row + 1 '*letzte Reihe von unten +1
lngLC = .Cells(3, Columns.Count).End(xlToLeft).Column 'Letzte Spalte ab Spalte A
.Range("E3:E" & LngRow).Resize(, lngLC - 3).Copy
'new_sh.Cells(zeile, "A").End(xlUp).PasteSpecial xlPasteValues 'falsch
new_sh.Cells(zeile, "A").PasteSpecial xlPasteValues 'Nur Werte 'richtig
End With
Next
End Sub
Gruß, MCO
Anzeige
AW: Alle Sheets in ein neues kopieren
01.12.2021 09:52:40
Chris
Hi MCO,
danke für deinen Tipp, es läuft nun.
Ich erhalte eine Fehlermeldung bei
LngRow = .Range("E:E").Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Row + 1
(Anwendungs- und Objektdefinierter Fehler...). Die Variable kann nicht immer gefüllt werden (Wert 0), da in allen Sheets die erste Zeile einen verbundene Zelle ist. Ich löse das mit "on error resume next", um den Fehler zu ignorieren.
Außer die verbunden Zelle rückgängig zu machen, wie sage ich excel es soll in allen Sheets ab Zelle E2 die letzte Zelle suchen?
Danke und Gruß
Chris
Anzeige
letzte Zeile hast du doch schon
01.12.2021 11:55:02
MCO
zeile = new_sh.Cells(Rows.Count, 1).End(xlUp).Row + 1 '*letzte Reihe von unten +1
In spalte "E" wäre es dann
zeile = new_sh.Cells(Rows.Count, 5).End(xlUp).Row + 1 '*letzte Reihe von unten +1
oder
zeile = new_sh.Cells(Rows.Count,"E").End(xlUp).Row + 1 '*letzte Reihe von unten +1
AW: Alle Sheets in ein neues kopieren
01.12.2021 11:39:52
Firmus
Hi Chris,
probier es mal so:

zeile = new_sh.Cells(Rows.Count, 1).End(xlUp).Row + 1 '*letzte Reihe von unten +1
LngRow = .Range("E2:E" & zeile).Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Row + 1
Gruß,
Firmus
Anzeige
AW: Alle Sheets in ein neues kopieren
01.12.2021 16:39:11
Chris
Danke euch, funktioniert bestens!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige