Select Case met dynamische array variabele

Status
Niet open voor verdere reacties.

JVLDR

Gebruiker
Lid geworden
11 okt 2017
Berichten
25
Goedendag allen,

Ik ben geen expert met vba, dus mogelijk zijn mijn gebruikte codes niet 'optimaal', excuses daarvoor alvast. Ik weet dat dit soms een doorn in het oog kan zijn voor de meer gevorderden onder ons ;)

zie de volgende (werkende) code:

Code:
For Each PF In PT.PivotFields
    PF.ClearAllFilters
Next PF

Set PF = PT.PivotFields("NR")

For Each PI In PF.PivotItems
    Select Case PI.Value
        Case nummers(1), nummers(2), nummers(3), nummers(4)
        Case Else
            PI.Visible = False
    End Select
Next PI

Met deze code lukt het mij om een draaitabelveld te 'filteren' op de waardes die zijn opgeslagen in de (als ik het goed zeg) statische array-variabele 'nummers'. Dit zou ideaal zijn als ik elke keer op precies 4 nummers zou moeten 'filteren'. Nu is het zo dat het elke keer om een ander aantal nummes gaat. Dus heb ik een dynamische array variabele gemaakt: Nummers(N). Ook dit gaat goed. Voor de volledigheid even de code:

Code:
Dim nummers As Variant
Dim N As Long 
ReDim nummers(1 To 100) As Variant
Set WS = Worksheets("Naam")
LR = WS.Cells(Rows.Count, "A").End(xlUp).Row
N = 1
    
    For i = 6 To LR
        If WS.Range("F" & i).Value = WS.Range("D1").value Then
            nummers(N) = WS.Range("A" & i).Value
            N = N + 1
        End If
    Next i

 ReDim Preserve nummers(1 To N - 1)

Met mijn nieuwe array-variabele kan ik hetzelfde select case truucje echter niet meer uit halen. De volgende code werkt (immers) niet:

Code:
Case nummers(1) to nummers(N)



Hoe kan ik dit nu het beste aanvliegen?

alvast bedankt!

---edit:

Ik heb ook de volgende code geprobeerd, maar dan geeft hij bij de 2e loop gelijk een foutmelding. Het geel gemarkeerde gedeelte is in dat geval 'PI.visible = false' onder 'Case Else'.

Code:
For i = 1 To UBound(nummers)
    For Each PI In PF.PivotItems
        Select Case PI.Value
            Case nummers(i)
                If PI.Visible = False Then
                    PI.Visible = True
                End If
            Case Else
                If PI.Visible = True Then
                    PI.Visible = False
                End If
        End Select
    Next PI
Next i
 
Laatst bewerkt:
Handig zo'n duidelijk voorbeeldbestand....

Code:
sub M_snb()
   sn=range("A1:A80")

    For Each PI In PF.PivotItems
      PI.visible=not iserror(application.match(PI.Value,sn,0))
    Next
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan