• 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.

Array van zichtbare cellen

  • Onderwerp starter Onderwerp starter AatB
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

AatB

Gebruiker
Lid geworden
15 dec 2007
Berichten
257
Hallo,

Aangezien ik voor het maken van een dashboard nogal wat regels (> 200.000) door moet lopen in een worksheet wil ik dit gaan doen met een array.
De eerste tests zijn hoopvol, echter als ik dmv een autofilterregels verberg welke ik dan niet in de array op wil nemen, lukt dat echter niet.
De hele range wordt toch in de array gezet.

Weten jullie een snelle oplossing, zonder dat ik de hele sheet regel voor regel moet doorlopen?

Code:
Sub TestArray()

    Dim xArray() As Variant
    Dim Rng As Range

    Set Rng = Range("A1").CurrentRegion
    
    'Dit gaat prima
    xArray = Rng

    'Dit werkt helaas niet
    xArray = Rng.SpecialCells(xlVisible).Cells

End Sub
 
Maak er eens dit van:
Code:
Sub TestArray()
    Dim Rng() As Variant
    Rng = Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Cells
End Sub
 
Laatst bewerkt:
Helaas werkt dat niet.
De array wordt opgebouwd tot aan de eerste verborgen Cell.
 
De volgende oplossing is wat omslachtig, maar werkt...

Code:
Sub TestArray()

    Dim xArray() As Variant
    
    Dim Rng1 As Range
    Dim Rng2 As Range
    
    Dim wsd As Worksheet
    Dim wsk As Worksheet
    
    Set wsd = Worksheets("DataOrg")
    Set wsk = Worksheets("Data")
    
    On Error Resume Next
    wsd.ShowAllData
    On Error GoTo 0
    
    'set filter in wsd
    wsd.Range("maand").Offset(1, 0) = 12
    wsd.Range("A10").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, _
                    CriteriaRange:=wsd.Range("A1").CurrentRegion, Unique:=False11

    Set Rng1 = wsd.Range("A10").CurrentRegion.SpecialCells(xlVisible).Cells
    
    wsk.Cells.Delete
    Rng1.Copy Destination:=wsk.Range("A1")
    
    Set Rng2 = wsk.Range("A1").CurrentRegion
    xArray = Rng2

    For i = LBound(xArray) To UBound(xArray)
        'data verder verwerken
        
    Next

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan