doorgeven van arrays van en nar functies

Status
Niet open voor verdere reacties.

Speedy7912

Gebruiker
Lid geworden
4 dec 2009
Berichten
65
om een array door te geven aan een functie gebruik ik de volgende code

Code:
Sub DoeIetsMetArrays()
Dim datearray() As Date
Dim sortedDateArray() As Date
    For regel = 10 To 28
    If Blad1.Range("A" & regel).Value <> "" Then
     datearray(regel - 10) = Blad1.Range("A" & regel).Value
    End If
    Next regel
    sortedDateArray() = SortDateArray(Arr:=datearray)
 End Sub


Code:
Function SortDateArray(ByRef Arr() As Date) As Date()
Dim lLoop As Long
Dim lLoop2 As Long
Dim date1 As Date
Dim date2 As Date
    'Sort array
    For lLoop = 0 To UBound(Arr)
       For lLoop2 = lLoop To UBound(Arr)
            If UCase(Arr(lLoop2)) < UCase(Arr(lLoop)) Then
                str1 = Arr(lLoop)
                str2 = Arr(lLoop2)
                Arr(lLoop) = date2
                Arr(lLoop2) = date1
            End If
        Next lLoop2
    Next lLoop
    'return array
    SortDateArray = Arr()
End Function


ik krijg echter de melding: Subscript valt buiten bereik. Dit bij het vullen van de datearray. Kan iemand aangeven wat ik fout doe.

Tevens is mijn vraag hoe vba met het opruimen van variabelen omgaat. Stel: ik roep de functie SortDateArray meerdere malen aan. Steeds met een ander source array welke in grootte verschilt. moet ik hiervoor zelf de array opruimen of doet VBA dit voor me. Indien ik het zelf moet doen, hoe ga ik dan te werk.

alvast mijn hartelijke dank
 
Code:
   sub anders()
     With Blad1
       .[A10:A28].specialcells(2).copy .[AA1]
       .[AA1].currentregion.Sort .[AA1]
       sortedarray=worksheetfunction.transpose(.[AA1].currentregion)
       .[AA1].currentregion.clearcontents
     End with
   end sub

PS. Het is niet handig (of zelfs...) een variabele en een funktie dezelfde naam te geven.
 
Laatst bewerkt:
snb,

dank je voor je snelle reactie. Is het echter ook mogelijk deze code zonder gebruik van cellen op mijn werkblad te gebruiken.

Hierbij zou ik tevens graag de arrays daadwerkelijk doorgeven binnen de functies daar ik deze ook nog in andere functies moet gaan gebruiken. kortom hoe vul ik een array met date-values.

Verder zie ik in je code ontzettend veel slimme programmeer mogelijkheden en functies. Als je deze functies kent, wordt het een stuk makkelijker code in elkaar te zetten. Is er ergens een overzicht beschikbaar met al deze opties. Ik merk namelijk dat de VBE niet in alle gevallen deze functies automatisch herkend of aanvult. Zeker niet als er met with statements gewerkt gaat worden. Zodra je een lijst met opties hebt kan ik in google wel vinden wat deze allemaal doen vermoed ik.

hartelijk dank.
 
Waarom zou je geen gebruik maken van voorzieningen (werkblad) die toch al geopend zijn ?
De VBEditor heeft een uitgebreide hulpfunktie: type een woord, selekteer het en sla op F1.
Jouw belangrijkste fout is het dubbel gebruik van een naam. Test eerst het effekt als je dat heb opgelost.
 
dank je voor je advies, ik ga er mee aan de gang..

overigens zie ik geen dubbele naam (toch?). Volgens mij bedoel je sorteddatearray en sortdatearray.

gr
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan