bug op autofilter

Status
Niet open voor verdere reacties.

pvanbrakel

Gebruiker
Lid geworden
2 dec 2010
Berichten
35
Goedemiddag.

Ik heb een bug op mijn autofilter in mijn macro.
Nu gaat hij steeds stuk op het feit dat er wel een autofilter is en die verwijderd moet worden of dat er geen 1 is en er 1 toegevoegd moet worden.
Wat de bug precies is weet ik ook niet.
Er staat:

Run-time error '1004':
Autofilter method of Range Class failed

Code:
Sub filteren()
    With Application
        '.ScreenUpdating = False
        .DisplayAlerts = False
    End With
    
            'Sheets verwijderen
    For Sht = Sheets.Count To 1 Step -1
        If Sheets(Sht).Name <> "All" Then Sheets(Sht).Delete
    Next Sht
    
            'Spaties verwijderen
    For SpatieRemove = 1 To Range("IV1").End(xlToLeft).Column + 1
        Cells(1, SpatieRemove).Value = Trim(Cells(1, SpatieRemove).Value)
    Next SpatieRemove
    
            'bepalen kolommen om te filteren
    Set CGZ = Range("A1:Z1").Find("CGZ", LookIn:=xlValues, Lookat:=xlWhole)
    If CGZ Is Nothing Then
        MsgBox "Kan de waarde CGZ niet vinden!"
        Exit Sub
    End If
    Set CGY = Range("A1:Z1").Find("CGY", LookIn:=xlValues, Lookat:=xlWhole)
    If CGY Is Nothing Then
        MsgBox "Kan de waarde CGY niet vinden!"
        Exit Sub
    End If
    Set CGX = Range("A1:Z1").Find("CGX", LookIn:=xlValues, Lookat:=xlWhole)
    If CGX Is Nothing Then
        MsgBox "Kan de waarde CGX niet vinden!"
        Exit Sub
    End If
    
[COLOR="red"]            'verwijderen lege rij (rij 2 is soms leeg en soms niet)
    Sheets("All").Select
        If WorksheetFunction.CountA([A2:Z2]) = 0 Then Rows(2).Delete
    Sheets("All").AutoFilterMode = False
            
            'filteren blok 1
    With Selection
        .AutoFilter Field:=CGZ.Column, Criteria1:=">-10", Operator:=xlAnd, Criteria2:="<12216"
        .AutoFilter Field:=CGY.Column, Criteria1:=">-15300", Operator:=xlAnd, Criteria2:="<15300"
        .AutoFilter Field:=CGX.Column, Criteria1:=">-10500", Operator:=xlAnd, Criteria2:="<62500"[/COLOR]
        Sheets("All").Columns("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok1"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'Filteren blok 234
        .AutoFilter Field:=CGX.Column, Criteria1:=">62500", Operator:=xlAnd, Criteria2:="<185300"
        Sheets("All").Columns("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok 234"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'Filteren blok 5aft
        .AutoFilter Field:=CGZ.Column, Criteria1:=">12216", Operator:=xlAnd, Criteria2:="<18616"
        .AutoFilter Field:=CGY.Column, Criteria1:=">-10500", Operator:=xlAnd, Criteria2:="<57900"
        Sheets("All").Range("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok 5aft"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'Filteren blok 5fwd+6
        .AutoFilter Field:=CGX.Column, Criteria1:=">57900", Operator:=xlAnd, Criteria2:="<190500"
        .AutoFilter Field:=CGZ.Column, Criteria1:=">12216", Operator:=xlAnd, Criteria2:="<25738"
        Sheets("All").Columns("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok 5fwd+6"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'Filteren blok7
        .AutoFilter Field:=CGZ.Column, Criteria1:=">25738", Operator:=xlAnd, Criteria2:="<40730"
        .AutoFilter Field:=CGX.Column, Criteria1:=">111300", Operator:=xlAnd, Criteria2:="<175700"
        Sheets("All").Columns("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok7"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'uitschakelen autofilter en selectie ongedaan maken
        Application.CutCopyMode = False
        .AutoFilter Field:=CGX.Column
        .AutoFilter Field:=CGY.Column
        .AutoFilter Field:=CGZ.Column
    End With
    
    Sheets("All").Select
    MsgBox "Filter proces is succesvol afgerond."
    With Application
        '.ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub

De bug zit in het rode stuk

Sheets("All").AutoFilterMode = False is ingevoegd voor als er een autofilter in staat dan moet die eerst uit, voordat excel weer een nieuwe autofilter in kan voegen.

Wie kan mij helpen?
 
Probeer de volgende code eens:

Code:
Sub filteren()
    With Application
        '.ScreenUpdating = False
        .DisplayAlerts = False
    End With
    
            'Sheets verwijderen
    For Sht = Sheets.Count To 1 Step -1
        If Sheets(Sht).Name <> "All" Then Sheets(Sht).Delete
    Next Sht
    
            'Spaties verwijderen
    For SpatieRemove = 1 To Range("IV1").End(xlToLeft).Column + 1
        Cells(1, SpatieRemove).Value = Trim(Cells(1, SpatieRemove).Value)
    Next SpatieRemove
    
            'bepalen kolommen om te filteren
    Set cgz = Range("A1:Z1").Find("CGZ", LookIn:=xlValues, Lookat:=xlWhole)
    If cgz Is Nothing Then
        MsgBox "Kan de waarde CGZ niet vinden!"
        Exit Sub
    End If
    Set cgy = Range("A1:Z1").Find("CGY", LookIn:=xlValues, Lookat:=xlWhole)
    If cgy Is Nothing Then
        MsgBox "Kan de waarde CGY niet vinden!"
        Exit Sub
    End If
    Set cgx = Range("A1:Z1").Find("CGX", LookIn:=xlValues, Lookat:=xlWhole)
    If cgx Is Nothing Then
        MsgBox "Kan de waarde CGX niet vinden!"
        Exit Sub
    End If
    
            'verwijderen lege rij (rij 2 is soms leeg en soms niet)
    If WorksheetFunction.CountA([A2:Z2]) = 0 Then Rows(2).Delete
    
            'filteren blok 1
    With Sheets("All").Cells
        If ActiveSheet.FilterMode = False Then .AutoFilter
        .AutoFilter Field:=cgz.Column, Criteria1:=">-10", Operator:=xlAnd, Criteria2:="<12216"
        .AutoFilter Field:=cgy.Column, Criteria1:=">-15300", Operator:=xlAnd, Criteria2:="<15300"
        .AutoFilter Field:=cgx.Column, Criteria1:=">-10500", Operator:=xlAnd, Criteria2:="<62500"
        Sheets("All").Columns("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok1"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'Filteren blok 234
        .AutoFilter Field:=cgx.Column, Criteria1:=">62500", Operator:=xlAnd, Criteria2:="<185300"
        Sheets("All").Columns("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok 234"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'Filteren blok 5aft
        .AutoFilter Field:=cgz.Column, Criteria1:=">12216", Operator:=xlAnd, Criteria2:="<18616"
        .AutoFilter Field:=cgy.Column, Criteria1:=">-10500", Operator:=xlAnd, Criteria2:="<57900"
        Sheets("All").Range("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok 5aft"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'Filteren blok 5fwd+6
        .AutoFilter Field:=cgx.Column, Criteria1:=">57900", Operator:=xlAnd, Criteria2:="<190500"
        .AutoFilter Field:=cgz.Column, Criteria1:=">12216", Operator:=xlAnd, Criteria2:="<25738"
        Sheets("All").Columns("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok 5fwd+6"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'Filteren blok7
        .AutoFilter Field:=cgz.Column, Criteria1:=">25738", Operator:=xlAnd, Criteria2:="<40730"
        .AutoFilter Field:=cgx.Column, Criteria1:=">111300", Operator:=xlAnd, Criteria2:="<175700"
        Sheets("All").Columns("A:Z").Copy
        Sheets.Add
        With ActiveSheet
            .Paste
            .Name = "blok7"
            .[A1].Select
            .Columns.AutoFit
            .Tab.ColorIndex = 4
        End With
        
            'uitschakelen autofilter en selectie ongedaan maken
        Application.CutCopyMode = False
        .AutoFilter Field:=cgx.Column
        .AutoFilter Field:=cgy.Column
        .AutoFilter Field:=cgz.Column
    End With
    
    Sheets("All").Select
    MsgBox "Filter proces is succesvol afgerond."
    With Application
        '.ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan