Hoe geef ik een Dynamische Array Door aan een andere Sub?

Status
Niet open voor verdere reacties.

Wocky

Gebruiker
Lid geworden
22 feb 2014
Berichten
192
Beste,

Hoe kan ik een Dynamische Array doorgeven aan een andere SubProcedure?
Het is zo dat ik in een bepaalde sub, een array creëer & vul, en deze Array wil ik aanspreken als ik op een listbox klik in een userform.

Ik eindig mijn 1ste sub met
Code:
UserForm1.Show

In het Userform heb ik volgende code.
Code:
Private Sub ListBox1_Click()
        If Not ListBox1.Value = "" Then
            Me.TextBox1.Value = Array1(4, 3).Value
            
        End If
End Sub
Waarin:
Listbox is gevuld met: "" en met andere waarden
Op UserForm1 staat een TextBox1
Waarin ik een waarde wil schrijven uit Array1 (die dus gemaakt is in een andere sub).

Ik krijg volgende foutmelding als ik klik op de ListBox
1.jpg

Ik heb Option Exlplicit opstaan, dus deze foutmelding zal komen omdat vba een niet gedeclareerde code "Array1" vindt...
Dus ik zou deze kunnen declareren...
Maar dan moet ik Volgende info kunnen doorgeven.
- De grootte van de Array1 (staat ook allemaal in parameters in de 1ste sub)
- De informatie die in Array1 zit.

Kan iemand mij hiermee helpen?

Dien ik op 1 of andere manier "GrootteArray1" & "Array1" door te geven van uit de 1ste sub naar sub "ListBox1_Click" volgens onderstaande methodiek of iets dergelijks?

Code:
Call ListBox1_Click("GrootteArray1, "Array1")


Groeten Wocky.
 
Laatst bewerkt:
Toon waar Array1 wordt gemaakt en wat erin staat.

waarschijnlijk is Dim Array1 in het declaratiedeel van de macromodule van het userform voldoende.
 
Beste,

Het probleem zit hem in het feit dat ik een parameter wil doorgeven aan een sub, dat een event representeerd van een object in de userform.
Ik doe het volgende maar het werkt niet.

Ik verklaar tussen haakjes een parameter, die de doorgegeven informatie moet opvangen en gerbuiken in de sub.
(Mijn doel is om een array door te geven, maar ik probeer het 1st even met een Integer)
Code:
Private Sub ListBox1_Click(MijnParameter As Integer)
    MsgBox MijnParameter
   
End Sub
In mijn hoofdmacro geef ik onderstaand statement.
Maar vanaf ik iets tussen haakjes heb gezet in de eventsub, werkt intellisense niet meer.. dus vba merkt op dat er al iets mis is denk ik dan.
Code:
UserForm1.ListBox1_Click (5)

Ik vermoed dat ik structureel iets verkeerd doe... maar wat?
Ik wil een parameter aanspreken van mijn hoofdsub, in een eventsub van een object van een userform.
Kan iemand mij helpen aub?

Ik krijg onderstaande foutmelding
1.jpg

Ik pas onderstaande methodiek toe.
https://www.youtube.com/watch?v=aoueDZDh0D4&list=PL3A6U40JUYCi4njVx59-vaUxYkG0yRO4m&index=13&t=0s


Alvast bedankt.
Wocky.
 
Laatst bewerkt:
Private Sub ListBox1_Click() is voorbehouden aan VBA en mag je geen parameters aan toevoegen.
Met een voorbeeldbestandje wordt je sneller en beter geholpen.
Afhankelijk van een waarde in een listbox wil je dat een waarde uit een array in een textbox komt?
 
Laatst bewerkt:
Of is de enige manier een de door te geven parameters de definiëren als Publieke variabelen?
(ik doe dit liever niet, om overzicht te bewaren in mijn code en fouten te vermijden...)

Dat is de juiste manier. Zie ook #3.
Het vermijden van fouten daarmee doe je door Option Explicit te gebruiken.
 
Ok,

In bijlage een voorbeeldbestandje.
Dus zoals je dan zei, je mag de Titelcode van de Eventsub niet wijzigen.. dit voorbeeldbestandje is dus verkeerd.
Maar hoe dan wel?

Groeten Wocky

Code Sub
Code:
Sub ArrayDoorgeven()
    Dim i As Long
    Dim LaatsteRij As Long
    Dim MyArray() As String
    
    LaatsteRij = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To LaatsteRij
        If Not IsEmpty(Cells(i, 1)) Then
            ReDim Preserve MyArray(1 To i)
            MyArray(i) = Cells(i, 1).Value
        
        End If
    Next i
    
    UserForm1.Show
End Sub

Code UserForm1
Code:
Private Sub ListBox1_Click(MyArray As String)
    MsgBox MyArray(3)

End Sub
Bekijk bijlage Map1.xlsm
 
Laatst bewerkt:
Ok Thanks.

Bijkomende vraag.
Heb ik het goed gelezen & begrepen dat Listboxen & Comboboxen 1 op 1 gevuld kunnen worden met 2D array,

En dus dat een listbox met slechts 3 kolommen zichtbaar (eigenschap ColumnCount = 3), wel effectief meerdere kolommen kunnen bevatten (zoveel als de Array er heeft) bvb 10?
En dat je dus ook deze info in niet zichtbare kolommen kan aanspreken in je listbox?

Groeten Wocky.
 
Zie voor een zeer goede uitleg de links van snb in #3.
 
Mja, Is goede uitleg.. maar heel veel bijkomende info...
Maar goed.. zal wel even doorbijten.
Thanks.
 
Option Base 1 is alleen voor arrays.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan