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

doorgeven waarden bij SUBs

Status
Niet open voor verdere reacties.

Stone52

Gebruiker
Lid geworden
11 dec 2004
Berichten
320
Hallo,

Ik experimenteer al een tijdje met het doorgeven van waarde(n)
van macro1 naar macro2 naar macro3.

Wie heeft een suggestie.

Ik gebruik op mijn werkblad een opdrachtknop:
Code:
Private Sub CommandButton1_Click()

Artikelnr = ""

    ArtikelnrBepalen (Artikelnr)

    SortArtikelnr

    ArtikelnrZoeken (Artikelnr)

End Sub

In ArtikelnrBepalen wordt een artikelnr gevonden en gevuld,
maar niet teruggegeven aan de private sub CB1.

Hoe zorg ik ervoor dat het artikelnr wel in de private sub CB1
wordt "ontvangen" en bruikbaar wordt voor ArtikelnrZoeken ?
 
Laatst bewerkt:
Stone52, Je zal je variabele buiten die routine moeten declareren. Dus bovenaan die standaard module. Maak er trouwens sowieso een gewoonte van om je variabelen en constanten te declareren, dat werkt een stuk netter.

Groet, Leo
 
Aanvullend op de reactie van Ginger.
Code:
[B]Dim Artikelnr As String[/B]
Private Sub CommandButton1_Click()

Artikelnr = ""

    ArtikelnrBepalen (Artikelnr)

    SortArtikelnr

    ArtikelnrZoeken (Artikelnr)

End Sub
Het vetgedrukte is dus toegevoegd.
Ik heb het als String(=tekst)variabele gedeclareerd omdat je de waarde als leeg heb bepaald ipv 0.

Inderdaad is het meer dan een goede gewoonte om variabelen te declareren.

Met vriendelijke groet,


Roncancio
 
Roncancio en Ginger,

de dim van de Artikelnr as string stond al onder de option explicit genoemd.
van het betreffende werkblad. In de ArtikelnrBepalen sub zie ik dat het
Artikelnr wordt gevuld, maar zodra de besturing weer terugkomt bij de
privat sub CB1 is artikelnr weer leeg.

Als Artikelnr binnen ArtikelnrBepalen is gevuld dat geeft Artikelnr in de
aanroepende sub nog steeds de "oude" waarde weer. Kennelijk is er "iets"
aan de hand met de definitie of de plaats van Artikelnr.

Kortom naar ArtikelnrBepalen wordt de waarde goed doorgegeven, maar
terug naar de aanroepende privat sub CB1 bevat Artikelnr de oorspronkelijke
waarde waarmee ArtikelnrBepalen werd aangeroepen.
 
Laatst bewerkt:
Ik neem aan dat de aangeroepen routines 'functies' zijn? Anders zal je nooit iets terugkrijgen...

Groet, Leo
 
Ik zou de declaraties wel bij de codes zetten.
Voorbeeld:

Code:
Dim ARTIKELNR As Long

Sub Macro1()
ARTIKELNR = 5
Macro2
End Sub

Sub Macro2()
MsgBox ARTIKELNR
End Sub

Macro 1 wordt gestart en aan variabele ARTIKELNR wordt de waarde 5 gegeven.
Doordat ARTIKELNR buiten de Sub is gedeclareerd (1e regel), behoudt ARTIKELNR de waarde die volgens via Macro2 wordt getoond.

Met vriendelijke groet,


Roncancio
 
de oplossing ?

gebruik call bij het aanroepen van de functie: het artikelnr
wordt dan wel teruggegeven.

Allen dank voor het meedenken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan