Hi Jeff,
Thank you for explaining the cause of the error message. I didn't know you can't use unedited subs. So we learned that again.
I hope I understand your explanation correctly and I have modified the code slightly. I'm going to use 6 subs now (there are 6 webshops), so that's a lot less than the previous code.
If you have any comments or if I misunderstood you, please let me know.
It's nice to learn from an expert.
This is a little piece of my new code
Sub filter_VO_docent()
Dim MonthCode As String
Dim webshop As String
Dim NewRng As Long
NewRng = Range("A" & Rows.Count).End(xlUp).Row
Dim rFiltered As Range
Dim ws As Worksheet
webshop = "VO Docent webshop"
MonthCode = "jan"
Rows("1:1").Select
Selection.AutoFilter
Set rFiltered = ActiveSheet.AutoFilter.Range
'geeft aan welke kolommen je gaat filteren en wat de filter criteria is
With Range("$A1:$D" & NewRng)
.AutoFilter Field:=2, Criteria1:=webshop & "*"
.AutoFilter Field:=4, Criteria1:="<>"
.AutoFilter Field:=3, Criteria1:="*" & MonthCode & "*"
'als er geen filter resultaat is dan kan er niets gekopieerd worden en loopt het programma vast
'daarom wordt hier gekeken of er minder dan 1 resultaat is
'als dit zo is gaat hij naar de volgende filtering
'is dit wel zo dan gaat hij verder met het kopieerten van het resultaat
If .Columns("A").SpecialCells(xlCellTypeVisible).Count > 1 And Columns("B").SpecialCells(xlCellTypeVisible).Count > 1 And .Columns("C").SpecialCells(xlCellTypeVisible).Count > 1 And Columns("D").SpecialCells(xlCellTypeVisible).Count > 1 Then
'hier gaat hij de kolommen kopieeren en plakken op het tabblad van de desbetreffende maand
rFiltered.Offset(1, 0).Resize(rFiltered.Rows.Count - 1).Columns("A:D").SpecialCells(xlCellTypeVisible).Copy
Sheets(1).Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Set ws = Worksheets(1)
With ActiveSheet
i = Application.WorksheetFunction.CountA(ws.Range("A2:A1000000"))
Windows("Overzicht bestellingen webshop per maand.xlsx").Activate
Worksheets("Januari").Select
Range("C5").Select
ActiveCell.FormulaR1C1 = i
End With
End If
'hier gaat hij naar de volgende filtering
'hij zet ook eerst de filter weer uit, anders gaat de volgende macro mis
Windows("Export uit Magento.xlsx").Activate
Worksheets(1).Select
Cells.Clear
Sheets(2).Select
Selection.AutoFilter
Rows("1:1").Select
Selection.AutoFilter
MonthCode = "feb"
Set rFiltered = ActiveSheet.AutoFilter.Range
'geeft aan welke kolommen je gaat filteren en wat de filter criteria is
With Range("$A1:$D" & NewRng)
.AutoFilter Field:=2, Criteria1:=webshop & "*"
.AutoFilter Field:=4, Criteria1:="<>"
.AutoFilter Field:=3, Criteria1:="*" & MonthCode & "*"
'als er geen filter resultaat is dan kan er niets gekopieerd worden en loopt het programma vast
'daarom wordt hier gekeken of er minder dan 1 resultaat is
'als dit zo is gaat hij naar de volgende macro
'is dit wel zo dan gaat hij verder met het kopieerten van het resultaat
If .Columns("A").SpecialCells(xlCellTypeVisible).Count > 1 And Columns("B").SpecialCells(xlCellTypeVisible).Count > 1 And .Columns("C").SpecialCells(xlCellTypeVisible).Count > 1 And Columns("D").SpecialCells(xlCellTypeVisible).Count > 1 Then
'hier gaat hij de kolommen kopieeren en plakken op het tabblad van de desbetreffende maand
rFiltered.Offset(1, 0).Resize(rFiltered.Rows.Count - 1).Columns("A:D").SpecialCells(xlCellTypeVisible).Copy
Sheets(1).Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Set ws = Worksheets(1)
With ActiveSheet
i = Application.WorksheetFunction.CountA(ws.Range("A2:A1000000"))
Windows("Overzicht bestellingen webshop per maand.xlsx").Activate
Worksheets("Februari").Select
Range("C5").Select
ActiveCell.FormulaR1C1 = i
End With
End If
End With
End With
End Sub
Bookmarks