In deze zelfstudie leert u hoe u een waarde uit een subprocedure in VBA kunt retourneren.
Een subprocedure is niet ontworpen om een waarde terug te geven - daar wordt een functieprocedure voor gebruikt. Er kan echter een moment zijn waarop u code uitvoert in een subprocedure waarbij u een waarde uit die subprocedure moet halen. De manier om dit te doen is om Module of Globale variabelen te gebruiken of om een subprocedure te gebruiken om een Excel-blad te vullen.
Variabelen gebruiken om een waarde te retourneren
U kunt variabelen declareren op moduleniveau. Daarbij kunnen die variabelen overal in de module worden gebruikt en behouden de variabelen hun waarden. Om een variabele op moduleniveau te declareren, declareert u eenvoudig de variabele bovenaan uw codemodule:
123456789 | Optie explicietDim dblQty als DoubleSubtestA()'bel de TestB-sub'Bel TestB'toon de variabele waarde in het modulevenster'Debug.Print dblQtyEinde sub |
1234 | SubtestB()'vul de modulevariabele in'dblQty = 900Einde sub |
Om deze samen te voegen, zouden we TestA uitvoeren, die op zijn beurt TestB zou noemen en ons de waarde van 900 in het directe venster zou geven.
Dit zou alleen werken binnen de module, omdat de variabele is gedeclareerd met behulp van de Dim-instructie op moduleniveau.
Globale variabele
U kunt de variabele op globaal niveau declareren om deze in uw projectmodules te gebruiken.
Een subprocedure gebruiken om een Excel-blad te vullen
De onderstaande subprocedure vult bereik A1 tot C1 rechtstreeks in uw Excel-blad in, waardoor waarden naar de cellen worden geretourneerd vanuit de subprocedure.
12345 | Sub PopulateRange()Bereik ("A1") = "Product"Bereik ("B1") = "Aantal"Bereik ("C1") = "Kosten"Einde sub |
U kunt vervolgens in een andere procedure naar die waarden verwijzen door naar de celwaarden te verwijzen:
1234567 | Sub ophaalbereik()Dim Product als String, Quant zo lang, Kosten als dubbelProduct = bereik ("A1")Quant = Bereik ("B1")Kosten = Bereik ("C1")Einde sub |