• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Kopieren van data uit autofilter (VBA)

Status
Niet open voor verdere reacties.

riendevries

Gebruiker
Lid geworden
20 apr 2007
Berichten
36
Beste allemaal,

Ik ben momenteel bezig om data te automatiseren in excel. De brondata moet eerst worden gefiltereerd. Daarna wil ik de gefilterde waarden kopieren naar een ander werkblad.

Ik gebruik daarvoor de volgdende programmacode

Sub data()
Dim dagen as integer
dagen = 0
With Sheets("Blad1").Range("A6:M" & Sheets("Blad1").Range("M" & Rows.Count).End(xlUp).Row)
.AutoFilter
.AutoFilter Field:=11, Criteria1:="<>"&dagen, Operator:=xlAnd, Criteria2:="<>"
.Offset(1).SpecialCells(xlCellTypeVisible).Copy
End With

Locatie bepalen etc....

End Sub

Dit werkt prima als er data uit mijn voorwaarde filter komt rollen. Echter als er niets uit het filter komt rollen krijg ik een fout 1004. Geen cellen geselecteerd (wat ook logisch is)

Hoe kan ik dit oplossen dat het filter alleen kopieert als er aan de voorwaarde in een filter voldaan wordt.

Alvast bedankt!

mvg,

Rien
 
Kopieren met behulp van filter VBA

Hoi Wigi,

Bedankt voor de link. Hier heb ik inderdaad wat aan, plus het werkt ook. Nu heb ik nog 1 kleine vraag. Ik heb 12 kolommen in mijn filter. Ik wil alleen de data uit eerste 2 kolommen kopieren.

Heb met de offset gefreubeld, maar daar kom ik niet verder mee.
Weet iemand de oplossing aan de hand van deze code

Dim rng As Range
Dim rng2 As Range

With ActiveSheet.AutoFilter.Range
On Error Resume Next
Set rng2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With
If rng2 Is Nothing Then
MsgBox "No data to copy"
Else
Worksheets("Sheet2").Cells.Clear
Set rng = ActiveSheet.AutoFilter.Range
rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy _
Destination:=Worksheets("Sheet2").Range("A1")
End If
ActiveSheet.ShowAllData

Alvast bedankt!

gr Rien
 
Heb je in resize al geprobeerd: rng.Columns.Count-10

rng.Offset(1, 0).Resize(rng.Rows.Count - 1, rng.Columns.Count-10).Copy _
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan