Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Filtern und Kopieren - VBA

Filtern und Kopieren - VBA
09.11.2008 10:21:00
Wolfgang
Hallo,
gestern konnte ich von Daniel viele gute Tipps und Hinweise erhalten, um meine Frage zu klären. Mit dem folgenden Code möchte ich erreichen, dass gefilterte Daten in "Grunddaten" in die Tabelle "Altdaten" kopiert werden und diese Datensätze dann in "Grunddaten" gelöscht werden. Das klappt auch nun fast, aber irgendwie sind noch Fehler drin.
-das Format wird nicht mitkopiert, so dass z.B. ein Datum nur in Zahlen erscheint
-die Überschrift in A1 wird mit kopiert und auch gelöscht, was nicht sein sollte.
-kann ich evtl. die zu kopierenden Spalten bzw. Zeilen von A:O eingrenzen?
Wäre erneut sehr dankbar für entsprechende Hilfestellung.
Herzliche Grüße - Wolfgang

Sub FilternUndKopieren()
Application.ScreenUpdating = False
Sheets("Grunddaten").Activate
modBlattschutz.Blattschutz_aufheben
With Range("A1")
.Autofilter Field:=17, Criteria1:=">180"
.CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _
Sheets("Altdaten").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Sheets("Grunddaten").UsedRange.SpecialCells(xlVisible).Delete shift:=xlUp
End With
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filtern und Kopieren - VBA
09.11.2008 10:50:00
Daniel
Hi
wenn du nur die die sichtbaren Daten ohne Überschrift kopieren willst, dann kannst den zu kopierenden Bereich mit .Offset(zeilen, Spalten) verschieben und mit .Resize(Zeilen, Spalten) in der grösse anpassen.
insgesamt sieht das dann so aus

.Autofilter Field:=17, Criteria1:=">180"
.CurrentRegion.offset(1,0).SpecialCells(xlCellTypeVisible).Resize(,15).Copy 


wie du die Formate noch mitkopierst, kannst du aus meiner alten Datei ableiten, oder du verwendest statt "xlPasteValues" den Parameter "xlPasteAll", dann werden aber eventuelle Formeln mitkopiert und bleiben als formel erhalten, da musst du wissen, ob das ein Problem ist.
um das Löschen der überschrift zu verhindern, kannst du die gleiche Metohde verwenden wie beim Kopieren.
Gruß, Daniel

Anzeige
AW: Filtern und Kopieren - VBA
09.11.2008 11:32:00
Wolfgang
Hallo Daniel,
sorry, dass ich mich noch wieder mit einer Frage melden muss. - Das Kopieren klappt soweit und wunderbar. Mit dem Löschen habe ich noch meine Probleme, da bekomme ich den Code nicht angepasst, könntest Du mir da noch einen Tipp geben? - Ändere ich das so ab, wie beim Kopieren, löscht der Code mir alles. Der Hinweis mit der Änderung zum Format war übrigens sehr gut. Mit dem Code aus Deinem gestrigen Code hat er das Format immer unter die kopierten Daten 'drangehängt - nun ist das Format drin und die Überschrift beim Kopieren zumindest schon mal 'raus.- Danke schon jetzt wieder für Deine Rückmeldung.
Gruß - Wolfgang
Anzeige
AW: Filtern und Kopieren - VBA
09.11.2008 11:44:24
Daniel
Hi
probier mal zum Löschen:
Range("A1").currentregion.offset(1,0).specialcells(xlcelltypevisible).entirerow.delete
Gruß, Daniel
AW: Filtern und Kopieren - VBA
09.11.2008 11:48:08
Gerd
Hallo Wolfgang,
in xl2000 habe ich keine 17 Fields zur Verfügung.
Field u. Columns ( u. deinen Schutz) bitte anpassen.

Sub FilternUndKopieren2()
With Sheets("Grunddaten")
.Range("A1").AutoFilter Field:=5, Criteria1:=">180"
Intersect(.Columns("A:E"), .Range(.Rows(2), .Rows(.Range("a1").CurrentRegion.Rows.Count))). _
Copy
Sheets("Altdaten").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormats
Sheets("Altdaten").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
.Range(.Rows(2), .Rows(.Range("a1").CurrentRegion.Rows.Count)).EntireRow.Delete shift:=xlUp
.Range("A1").AutoFilter
.AutoFilterMode = False
.Application.CutCopyMode = False
End With
End Sub


Gruß Gerd

Anzeige
Danke Daniel und Gerd - klappt super
09.11.2008 12:22:00
Wolfgang
Hallo Daniel und Gerd,
zunächst euch beiden recht herzlichen Dank für die Rückmeldungen und Hilfestellung sowie Ausarbeitungen, aber auch für die Geduld mit mir. Ich habe deinen Code, Gerd, eingebaut und entsprechend umgestellt - er rennt super. - Die Ergänzung von Dir, Daniel, habe ich auch umgesetzt, allerdings will der Code noch nicht so wirklich, die Überschrift ist weiterhin futsch. Danke nochmals recht herzlich und allen noch einen schönen Sonntag.
Herzliche Grüße
Wolfgang
AW: Danke Daniel und Gerd - klappt super
09.11.2008 12:28:29
Daniel
Hi
"allerdings will der Code noch nicht so wirklich, die Überschrift ist weiterhin futsch."
das sollte eigentlich durch das OFFSET(1,0) vermieden werden

Range("A1").currentregion.offset(1,0).specialcells(xlcelltypevisible).entirerow.delete


daher wundert es mich,daß es trotzdem passiert.
Gruß, Daniel

Anzeige

329 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige