Array probleem

Status
Niet open voor verdere reacties.

Plotinus

Gebruiker
Lid geworden
25 mrt 2007
Berichten
659
Ik wil van een aantal tabbladen met data middels een macro de 'terugloop' afzetten, kolommen uitvullen en een autofilter in de bovenste rij plaatsen. Hiervoor heb ik een array gedefinieerd. Echter, als ik de makro aanroep terwijl ik op een blad sta dat niet in de array zit (in dit geval 'startblad'; rood gemaakt), dan loopt de makro vast met de foutmelding "De opdracht kan niet worden voltooid met het opgegeven bereik..." voor het autofilter. Als ik in een van de bladen sta waarvoor de makro moet worden uitgevoerd dan lijkt het enkel goed te gaan voor dat blad, behalve het plaatsen van de autofilter.

Ik heb geen idee hoe dit mogelijk is, maar veel ervaring met arrays heb ik dan ook niet. Ik heb het vage vermoeden dat het ergens in de declaratie zit; geen idee hoe ik de betreffende variabelen moet definieren; soms zie ik ook een foutmelding die op een gemist object slaat...

Zou iemand eens naar bijgevoegd bestandje willen kijken?
 

Bijlagen

Dit lijkt me voldoende

Code:
Sub M_snb()
  For Each it In Application.GetCustomListContents(4)
     With Sheets(it).Cells
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
     End With
  Next
End Sub
 
Dank je wel snb, maar helaas is het niet voldoende: ik krijg geen foutmelding meer, maar de actie wordt alleen uitgevoerd in het tabblad dat actief is. Ook het passend maken zit er niet in (maar dat is eenvoudig toe te voegen). Ook wordt nergens het autofilter toegevoegd; het lastigste lijkt me

Het gaat mij om welbepaalde sheets waar ik de actie op uit wil laten voeren, vandaar de keuze van een flexibel array. Of mijn actie ook met jouw methode kan weet ik niet (ik ken Application.GetCustomListContents(4) helemaal niet; nog wat studie werk).
 
Code:
Sub Uitvullen_bladen()
    Dim Bladen, blad
    Application.ScreenUpdating = False
    Bladen = Array("januari", "februari", "maart", "april", "mei", _
                   "juni", "juli", "augustus", "september", "oktober", "november", _
                   "december")
    For Each blad In Bladen
        With [COLOR="#FF0000"]Worksheets(blad).UsedRange[/COLOR]
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
            .Columns.AutoFit
           [COLOR="#FF0000"] If Not Worksheets(blad).AutoFilterMode Then
                .AutoFilter
            End If[/COLOR]
        End With
    Next blad
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan