Autofilter & Specialcells

Status
Niet open voor verdere reacties.

mcs51mc

Gebruiker
Lid geworden
19 feb 2008
Berichten
386
Hallo,

In bijgaand voorbeeld wens ik na het toepassen van een autofilter de data van kolom B uit de tweede rij van de gefilterde rijen te printen in de Immediate window.
Voor meer duidelijkheid, het is het getal 25.
Dat lukt mij niet :(

Cellen tellen of cellen kopiëren naar een andere locatie lukt wel maar één cel uit de gefilterde rijen plukken niet.

Wie kan mij verder helpen??
Alvast bedankt voor een reactie!
 

Bijlagen

En op basis van welke voorwaarde wordt dan 25 geselecteerd en niet een van de andere twee getallen?
 
Bedankt voor je reactie!
De voorwaarde van 2de of 3de getal is in dit voorbeeld niet belangrijk.
In mijn finale code heb ik die voorwaarde wel onder controle maar ik krijg ze niet gecombineerd met de gefilterde data.
Dus ben ik op zoek naar een generiek voorbeeld code... ...

Ondertussen heb ik nog wat verder gezocht en heb een methode gevonden om door alle zichtbare cellen te lopen.


Code:
Sub test()
Dim rngFilter   As Range
Dim rngFull     As Range

    Set rngFull = ActiveSheet.Range("B2:B11")
    
    ActiveSheet.UsedRange.AutoFilter field:=1, Criteria1:="aap"
    
    Debug.Print ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Count
    
    Debug.Print rngFull.SpecialCells(xlCellTypeVisible).Offset(2, 0).Value
    
    For Each rngFilter In rngFull.SpecialCells(xlCellTypeVisible)
        Debug.Print rngFilter.Value
    Next rngFilter
    
    Set rngFull = Nothing
    Set rngFilter = Nothing
End Sub

Door een teller in die For Each te steken kan ik er wel geraken maar dat is echt bij het haar getrokken.
Stel dat je zo de 83.000ste rij moet hebben :evil:

Ook de methode Offset werkt niet.
Ongeacht of de data gefilterd is of niet de Offset rij geeft altijd 35 terug alhoewel die SpecialCells ervoor staat :evil::(:evil:

VrGr
 
Werkt dit wel?
Code:
Sub hsv()
 Cells(1).CurrentRegion.AutoFilter 1, "aap"
 Debug.Print ActiveSheet.AutoFilter.Range.Offset(2, 1).SpecialCells(12).Cells(1).Value
End Sub
 
ne keer wel ne keer nie, zoals we langs hier zeggen :shocked:

Ik ging ervan uit dat je met de "rowoffset", eerste getal in de "Offset", ging kunnen kiezen tussen alle zichtbare rijen.

Wel hier is wat ik tegen kom
De gefilterde rijen bevatten na elkaar 12, 25 en 18
Met Offset(1,1) krijg ik 12 CORRECT :thumb:
Met Offset(2,1) krijg ik 25 CORRECT :thumb:
Met Offset(3,1) krijg ik 25 INCORRECT :evil:

Kom jij dat ook tegen ?!!?


Dus wel eigenaardig!
Ik ga even verder zoeken wat de Range na Autofilter juist doet... ...

Alvast bedankt voor het meedenken :cool:
 
De blauwe twee is de derde cel van de gefilterde rijen.
Als 2 een 1 wordt is dat de tweede rij.
Als 2 een 0 wordt is dat de eerste rij.
Er zijn maar drie rijen zichtbaar bij de filter op aap; twee is dus de max voor resultaat.
Code:
Sub hsv()
 Cells(1).CurrentRegion.AutoFilter 1, "aap"
 Debug.Print Range(Split(Split(ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(12).Address, ",")([COLOR=#0000ff]2[/COLOR]), ":")(1)).Value
End Sub
 
Hallo Harry,

In één woord : Perfect !!

Case closed :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan