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

VBA Makro / Kopie in nächste freie Zeile

VBA Makro / Kopie in nächste freie Zeile
26.01.2022 19:48:38
Sven
Guten Abend liebes Forum,
ich habe folgendes Anliegen und hoffe, dass mir hier geholfen werden kann. Ich habe ein Makro, welches nur die gefilterten Daten vom "Tabellenblatt1" aus dem Zellenbereich I4:R kopiert und die Daten in das Tabellenblatt "Planung" in Zelle "E11" übergibt. Das funktioniert soweit Super. Nun möchte ich aber, dass bei weiteren Übergaben an Tabellenblatt "Planung", der letzte Eintrag nicht überschrieben wird, sondern erst in die nächste freie Zeile eingefügt wird. Ich habe bereits einige Lösungsvorschläge im Netz gefunden, diese aber nicht auf mein schon bestehendes Makro angepasst bekommen.

Sub KopiereFilterZeile()
'Ab Zeile 2 alle gefilterten Zeilen bis Spalte "D" kopieren
' -> das "D" bitte an Deine Tabelle anpassen
ActiveSheet.Range("F4:R" & ActiveSheet.UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Copy
'...und ab "A2" in Tabelle2 einfügen
Worksheets("Planung").Range("D11").PasteSpecial
End Sub 
https://www.herber.de/bbs/user/150700.zip

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Makro / Kopie in nächste freie Zeile
26.01.2022 20:58:54
GerdL
Hallo Sven!
Es besteht ein gewisser Unterschied zwischen dem von dir gezeigten Code und deiner Beschreibung.
F ist nicht I und D ist nicht E. Aber die Spaltenbuchstaben kannst du dir sicher passend ändern.
Die Zellbezüge der Kommentare im Makro sind noch genauso zu überarbeiten.

Sub KopiereFilterZeile()
'Ab Zeile 2 alle gefilterten Zeilen bis Spalte "D" kopieren
' -> das "D" bitte an Deine Tabelle anpassen
ActiveSheet.Range("F4:R" & ActiveSheet.UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Copy
'...und ab "A2" in Tabelle2 einfügen
With Worksheets("Planung")
.Range("D" & Application.Max(11, .Rows.Count, "D").End(xlUp).Row).PasteSpecial
End With
Applicaton.CutCopyMode = False
End Sub
Gruß Gerd
Anzeige
AW: Korrektur
26.01.2022 21:02:06
GerdL

---->.End(xlUp).Row + 1 ).PasteSpecial

AW: VBA Makro / Kopie in nächste freie Zeile
26.01.2022 21:19:23
Sven
Hallo Gerd,
vielen Dank für deine Zuarbeit. Ich muss Dir Recht geben bei deiner Bemerkung, leider war es notwendig, die Excel Tabelle abzuspecken, um diese hochladen zu können. Dabei sind die Spalten verrutscht.
Ich habe es nun angepasst und getestet, bekomme aber eine Fehlermeldung ( Objekt erforderlich )

Sub KopiereFilterZeile()
'Ab Zeile 4 alle gefilterten Zeilen bis Spalte "O" kopieren
' -> das "O" bitte an Deine Tabelle anpassen
ActiveSheet.Range("F4:O" & ActiveSheet.UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Copy
'...und ab "D11" Planung einfügen
With Worksheets("Planung")
.Range("D" & Application.Max(11, .Rows.Count, "D").End(xlUp).Row).PasteSpecial
End With
Applicaton.CutCopyMode = False
End Sub

Grüße Sven
Anzeige
AW: VBA Makro / Kopie in nächste freie Zeile
26.01.2022 23:35:14
Yal
Hallo Sven,
falls keine Zeile in dem gegebenen Bereich sichtbar ist, bekommt "Copy" die Krise

Sub KopiereFilterZeile()
Dim R As Range
Set R = ActiveSheet.Range("F4:O" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible)
If R Is Nothing Then Exit Sub
R.Copy
With Worksheets("Planung")
.Range("D" & Application.Max(11, .Rows.Count, "D").End(xlUp).Row + 1).PasteSpecial
End With
Applicaton.CutCopyMode = False
End Sub
ActiveSheet.UsedRange.Rows.Count führt übrigens, falls die erste(n) Zeile(n) der Tabelle nicht befüllt sind, zu einem falschen Ergebnis.

Set R = Intersect(ActiveSheet.Range("F4:O99999").ActiveSheet.UsedRange).SpecialCells(xlCellTypeVisible)
könnte passen (ungetestet).
VG
Yal
Anzeige
AW: VBA Makro / Kopie in nächste freie Zeile
27.01.2022 05:59:31
Sven
Hallo Yal,
vielen Dank für deine Zuarbeit. Ich habe das Makro angepasst und folgende Meldung erhalten.

Sub KopiereFilterZeile()
Dim R As Range
Set R = ActiveSheet.Range("F4:O" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible)
If R Is Nothing Then Exit Sub
R.Copy
With Worksheets("Planung")
.Range("D" & Application.Max(11, .Rows.Count, "D").End(xlUp).Row + 1).PasteSpecial
End With
Applicaton.CutCopyMode = False
End Sub
Fehler -> Objekt erforderlich
und bei der zweiten Version,

Sub KopiereFilterZeile()
Dim R As Range
Set R = Intersect(ActiveSheet.Range("F4:O99999").ActiveSheet.UsedRange).SpecialCells(xlCellTypeVisible)
If R Is Nothing Then Exit Sub
R.Copy
With Worksheets("Planung")
.Range("D" & Application.Max(11, .Rows.Count, "D").End(xlUp).Row + 1).PasteSpecial
End With
Applicaton.CutCopyMode = False
End Sub
Fehler-> "Sub KopiereFilterZeile()" wird Gelb angezeigt und die Meldung "Fehler beim Kompilieren: Argument ist nicht optional" erscheint
Grüße Sven
Anzeige
AW: VBA Makro / Kopie in nächste freie Zeile
27.01.2022 09:48:09
Yal
Hallo Sven,
Unaufmerksamkeit:
nicht

Set R = Intersect(ActiveSheet.Range("F4:O99999").ActiveSheet.UsedRange).SpecialCells(xlCellTypeVisible)
sondern

Set R = Intersect(ActiveSheet.Range("F4:O99999"), ActiveSheet.UsedRange).SpecialCells(xlCellTypeVisible)
Ist doch klar, oder?
VG
Yal

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige