Meerdere regels in één keer plukken uit een varriant/array

Status
Niet open voor verdere reacties.

Interface

Gebruiker
Lid geworden
27 jan 2009
Berichten
156
In de bijlage met een voorbeeld bestandje van een dataset.

Op het moment dat ik de gegevens van blad1 zou selecteren als array (zo iets als: )
Code:
sq = blad1.usedrange

Hoe kan ik dan zonder Redim preserve of een for loop te gebruiken, een bepaald aantal regels als resultaat geven. Daarbij wil ik niet meer het werkblad aanspreken maar alleen nog in de gemaakte array werken. Misschien is dit wel de beperking in excel vba, maar in het verleden dit altijd opgelost door alles te loopen en over te schrijven naar een nieuwe array als resultaat. Nu vraag ik me dus af of ik kan zeggen tegen de editor met een enkele regel of een ingebouwde functie (geen zelfgemaakte!) of ik in 1 keer meerdere regels uit de array kan trekken als het ware. Zeg regels 4 t/m 10 uit de array.

Heb al iets geprobeerd met de application.index function, maar hier komt ik niet veel verder mee.

Bekijk bijlage Help_Mij_Test.xlsm
 
Ik begrijp je vraag niet helemaal denk ik.
Met de code die je plaatst heb je in je voorbeeld document al een array met 4 kolommen en 89 rijen.
 
Dank voor je reactie!

Ik ben bekend met het feit dat ik dan inderdaad een array heb met de door jouw genoemde aantallen. Wat ik graag wil weten is er een methode om in 1 keer meerdere regels uit deze array te pakken?
 
Nogmaals dank voor je reactie!

Gisteren ook tegen die url en methode aangekomen maar e.e.a. werkt niet (of ik doe iets verkeerd, moet mijzelf niet overschatten:p), ook op de site van SNB gekeken (hij heeft immers altijd de beste antwoorden hier!)

Kijk maar eens naar de onderstaande code:
Code:
Sub TEST()

    Dim sq, sq_NEW  As Variant
    Dim strMyValue  As String
    Dim i           As Integer
    
    strMyValue = "b"
    sq = Blad1.UsedRange
    
    For i = 1 To UBound(sq)
        If Len(sq(i, 1)) > 0 And sq(i, 1) = UCase(strMyValue) Then
            sq_NEW = Application.Index(sq, Application.Transpose(Array(1, 2, 4, 5)))
        End If
    Next i
    
    Blad2.Range("a1").Resize(UBound(sq_NEW, 2), UBound(sq_NEW, 1)) = sq_NEW
    
End Sub
 
Vertel er aan de hand van je voorbeeld document ook even bij welk resultaat je verwacht.
 
Och, die enkele keer dat dat niet zo is zij hem vergeven ;)
 
Meestal lijkt al beter dan altijd.

Gekheid hoor, ga verder met de vraagstelling.
 
Test eens wat met, en kijk op blad2.
Code:
Sub TEST()
sq = Blad1.UsedRange
  sq_NEW = Application.Index(sq, Application.Transpose(Array(1, 2, 4, 5)), Array(1, 2, 3, 4))
           Blad2.Range("a1").Resize(UBound(sq_NEW), UBound(sq_NEW, 2)) = sq_NEW
End Sub
 
Kijk! dat is wat ik zocht!

Application.Index moet dus (wanneer gevoed met een array) ook een array bevatten met de kolommen!

Mijn dank is groot!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan