Wat is ByRef in VBA?

Byref in VBA staat voor "By Reference". Met behulp van VBA Byref kunnen we de oorspronkelijke waarde targeten zonder de waarde te wijzigen die is opgeslagen in variabelen. Met andere woorden, we zullen de waarde direct doorgeven aan Sub-procedures in plaats van de reguliere methoden voor het definiëren en toewijzen van de waarden aan variabelen te doorlopen.

In VBA ByRef definiëren we de subprocedure nadat we de regel voor ByRef hebben ingesteld. Dit kan worden gedaan onder de subprocedure waar we de code willen schrijven. In ByRef definiëren we de variabele die in de Subprocedure wordt gebruikt. En het werkt alleen goed als we de ByRef-voorwaarde in onze subprocedure aanroepen.

Hoe de ByRef-functie in Excel VBA te gebruiken?

Hieronder staan ​​de verschillende voorbeelden om de ByRef-functie in Excel te gebruiken met behulp van VBA-code.

U kunt deze VBA ByRef Excel-sjabloon hier downloaden - VBA ByRef Excel-sjabloon

Excel VBA ByRef - Voorbeeld # 1

Laten we eerst leren hoe we een ByRef in VBA kunnen invoegen, volg hiervoor de onderstaande stappen. In dit voorbeeld zullen we zien hoe VBA ByRef te gebruiken voor een eenvoudig wiskundig aftrekkingswerk. Hiervoor hebben we een module nodig.

Stap 1: Ga dus naar VBA en open een module van de menuoptie Invoegen zoals hieronder wordt weergegeven.

Stap 2: Schrijf in de nieuw geopende module de subcategorie van VBA ByRef zoals hieronder weergegeven.

Code:

 Sub VBA_ByRef1 () Einde Sub 

Stap 3: Definieer nu een variabele, laten we zeggen dat het een A is als geheel getal.

Code:

 Sub VBA_ByRef1 () Dim A als Integer End Sub 

Stap 4: Geef een willekeurig nummer aan variabele A. Laat dat getal 1000 zijn.

Code:

 Sub VBA_ByRef1 () Dim A als geheel getal A = 1000 End Sub 

Stap 5: Om de waarde af te drukken die is opgeslagen in variabele A, zouden we Msgbox gebruiken.

Code:

 Sub VBA_ByRef1 () Dim A als geheel getal A = 1000 MsgBox A End Sub 

Stap 6: Nu compileren en voeren we deze code uit door op de knop Afspelen te klikken, zoals hieronder wordt weergegeven. We krijgen een berichtvenster met de waarde opgeslagen in variabele A als 1000 .

Pas nu VBA ByRef toe, maak een andere subcategorie aan onder de eerste en wijs de gedefinieerde variabele uit de eerste subcategorie toe aan ByRef.

Stap 7: Hiermee laten we de tweede subcategorie de waarden gebruiken die zijn opgeslagen in variabele A.

Code:

 Sub VBA_ByRef1 () Dim A als geheel getal A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A als geheel getal) End Sub 

Stap 8: Roep nu hier de variabele A opnieuw op en trek elke waarde af van variabele A om de uitvoerwaarde in dezelfde variabele te krijgen. Laten we 100 aftrekken van de waarde van variabele A zodat we een meetbaar getal krijgen.

Code:

 Sub VBA_ByRef1 () Dim A als geheel getal A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A als geheel getal) A = A - 100 End Sub 

Stap 9: Als we nu elke stap van de code compileren, zullen we merken dat wanneer de cursor variabele A heeft bereikt, we zullen zien dat er slechts 0 in is opgeslagen.

Stap 10: Wanneer de cursor End Sub bereikt, krijgen we de uitvoer als 1000 in het berichtvenster.

Stap 11: Het is omdat we de ByRef niet hebben toegewezen aan de eerste subcategorie. Nu zullen we de subcategorie naam toewijzen voor de berichtenboxfunctie van de eerste subcategorie en kijken wat er zal gebeuren.

Code:

 Sub VBA_ByRef1 () Dim A als geheel getal A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A als geheel getal) A = A - 100 End Sub 

Stap 12: Voer nu de volledige code opnieuw uit. We zullen zien dat de tweede waarde die is opgeslagen in variabele A als 100 werd afgetrokken van de eerste waarde 1000. Als resultaat kregen we het uitvoerbericht als 900.

Stap 13: Dit is het belangrijkste voordeel van het gebruik van ByRef. We hoeven niet meerdere variabelen voor een enkele taak te definiëren. Slechts één variabele is voldoende om de hele taak op verschillende manieren uit te voeren. We kunnen meer dan één ByRef gebruiken in een enkele module.

Laten we, om wat we hebben begrepen, nog een ByRef toevoegen in dezelfde module.

Code:

 Sub VBA_ByRef1 () Dim A als geheel A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A als Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A als Integer) End Sub 

Stap 14: Laten we in deze subcategorie vermenigvuldiging gebruiken.

Code:

 Sub VBA_ByRef1 () Dim A als Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A als Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A als Integer) A = A * 2 End Sub 

Stap 15: compileer opnieuw en voer de code opnieuw uit. We zullen zien dat de waarde verkregen uit de bovenstaande stappen als 900 nu wordt vermenigvuldigd met 2 om 1800 als uitvoer te krijgen.

Excel VBA ByRef - Voorbeeld # 2

In dit voorbeeld zullen we zien hoe ByRef werkt met andere soorten gehele getallen.

Stap 1: Open een module en schrijf de subcategorie zoals hieronder weergegeven.

Code:

 Sub VBA_ByRef4 () Einde Sub 

Stap 2: definieer nu een variabele A als Double. Hiermee kunnen we decimale waarden gebruiken.

Code:

 Sub VBA_ByRef4 () Dim A als Double End Sub 

Stap 3: Ken een decimale waarde toe aan variabele A.

Code:

 Sub VBA_ByRef4 () Dim A als Double A = 1, 23 Einde Sub 

Stap 4: Gebruik nu opnieuw het berichtenvak om de waarde te zien die is opgeslagen in variabele A.

Code:

 Sub VBA_ByRef4 () Dim A als dubbel A = 1, 23 MsgBox A End Sub 

Als we de code nu uitvoeren, krijgen we 1, 23 als uitvoer.

Stap 5: Op een andere manier zullen we Functie gebruiken om ByRef te definiëren als Double met variabele A.

Code:

 Sub VBA_ByRef4 () Dim A als Double A = 1, 23 MsgBox A End Sub-functie AddTwo (ByRef A As Double) als Double End-functie 

Stap 6: Voeg nu een willekeurig nummer toe aan variabele A. Laten we zeggen dat het 10 is.

Code:

 Sub VBA_ByRef4 () Dim A als dubbel A = 1, 23 MsgBox A End Sub-functie AddTwo (ByRef A als dubbel) As Double A = A + 10 End-functie 

Stap 7: En gebruik opnieuw deze gedefinieerde ByRef-functie in de eerste subcategorie. Hier zien we twee berichtenboxen, een voor variabele A en een voor ByRef.

Code:

 Sub VBA_ByRef4 () Dim A als dubbel A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub-functie AddTwo (ByRef A als dubbel) As Double A = A + 10 Eindfunctie 

Stap 8: Hetzelfde zou ook in het berichtvenster worden weerspiegeld.

Stap 9: En in de volgende run geeft het de toegevoegde waarde van 10 in de oorspronkelijke variabele waarde van 1, 23, zoals hieronder getoond.

Dit is hoe VBA Byref de referentie van de eenmaal gedefinieerde waarde neemt en vervolgens de uitvoer vult volgens de nieuwe voorwaarde.

Voors en tegens van VBA ByRef

  • Bij het schrijven van grote codes bespaart het veel tijd door de reeds gedefinieerde variabele te overwegen, zodat de waarde ervan telkens opnieuw kan worden gebruikt.
  • We hoeven niet veel variabelen te definiëren volgens de formule die we willen toepassen.
  • We kunnen veel ByRef-voorwaarden in een enkele module toepassen zonder het proces zelfs maar te verstoren.
  • We kunnen VBA Byref niet gebruiken in een complexe codestructuur.

Dingen om te onthouden

  • Wanneer meer dan één ByRef-voorwaarden wordt overwogen, wordt de uitvoer gebaseerd op de laatste subprocedure ByRef die we hebben gedefinieerd, maar het houdt ook rekening met alle eerder gebruikte ByRef-voorwaarden.
  • De uiteindelijke uitvoer heeft opeenvolgende verwerkte uitvoer. Niet alleen de nieuwste.
  • Dit proces kan niet worden uitgevoerd door de macro op te nemen.
  • We kunnen de waarde zien die is opgeslagen in elke fase van de variabele door de code te compileren.
  • Sla het excel-bestand op als het excel-formaat voor macro's, zodat we in de toekomst geen code verliezen.

Aanbevolen artikelen

Dit is een handleiding voor VBA ByRef. Hier bespreken we hoe de ByRef-functie in Excel te gebruiken met behulp van VBA-code, samen met praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Handleiding voor VBA UBound-functie
  2. OFFSET Excel-functie (voorbeeld, gebruik)
  3. Maak een hyperlink in Excel VBA
  4. Hoe de Excel-vulgreep te gebruiken?

Categorie: