Hvad er ByRef i VBA?

Byref i VBA står for “By Reference”. Ved hjælp af VBA Byref kan vi målrette mod den oprindelige værdi uden at ændre den værdi, der er gemt i variabler. Med andre ord overfører vi værdien direkte til Sub-procedurer i stedet for at gennemgå de regelmæssige metoder til at definere og tildele værdierne til variabler.

I VBA ByRef definerer vi underproceduren, når vi har indstillet reglen for ByRef. Dette kan gøres under underproceduren, hvor vi vil skrive koden. I ByRef omdefinerer vi variablen, der bruges i Sub-procedure. Og det fungerer kun korrekt, når vi kalder ByRef-tilstanden i vores underprocedure.

Hvordan bruges ByRef-funktionen i Excel VBA?

Nedenfor er de forskellige eksempler, der skal bruges ByRef-funktion i Excel ved hjælp af VBA-kode.

Du kan downloade denne VBA ByRef Excel-skabelon her - VBA ByRef Excel-skabelon

Excel VBA ByRef - Eksempel # 1

Lad os først lære, hvordan du indsætter en ByRef i VBA, for dette skal du følge nedenstående trin. I dette eksempel vil vi se, hvordan man bruger VBA ByRef til et simpelt matematisk subtraktionsarbejde. Til dette har vi brug for et modul.

Trin 1: Gå til VBA og åbn et modul fra menuen Indsæt som vist nedenfor.

Trin 2: I det nyåbnede modul skal du skrive underkategorien til VBA ByRef som vist nedenfor.

Kode:

 Sub VBA_ByRef1 () End Sub 

Trin 3: Definer nu en variabel, lad os sige, at det er et A som heltal.

Kode:

 Sub VBA_ByRef1 () Dim A Som heltal End Sub 

Trin 4: Giv et hvilket som helst tal til variabel A. Lad dette tal være 1000.

Kode:

 Sub VBA_ByRef1 () Dim A som heltal A = 1000 End Sub 

Trin 5: For at udskrive den værdi, der er gemt i variabel A, ville vi bruge Msgbox.

Kode:

 Sub VBA_ByRef1 () Dim A som heltal A = 1000 MsgBox A End Sub 

Trin 6: Nu kompilerer og kører vi denne kode ved at klikke på knappen Play som vist nedenfor. Vi får en meddelelsesboks med værdien gemt i variabel A som 1000 .

Anvend nu VBA ByRef, opret en anden underkategori under den første og tildel den definerede variabel fra den første underkategori med ByRef.

Trin 7: På dette tidspunkt tillader vi den anden underkategori at bruge de værdier, der er gemt i variabel A.

Kode:

 Sub VBA_ByRef1 () Dim A som heltal A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A som heltal) End Sub 

Trin 8: Kald nu på variablen A igen, og træk en hvilken som helst værdi fra variabel A for at få outputværdien i den samme variabel. Lad os trække 100 fra værdien af ​​variabel A, så vi får et målbart tal.

Kode:

 Sub VBA_ByRef1 () Dim A som heltal A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A som heltal) A = A - 100 End Sub 

Trin 9: Hvis vi nu samler hvert trin i koden, vil vi bemærke, at når markøren nåede variabel A, vil vi se, at der kun er 0 gemt i den.

Trin 10: Når markøren nåede End Sub, får vi output som 1000 i meddelelsesfeltet.

Trin 11: Det er fordi vi ikke har tildelt ByRef til den første underkategori. Nu tildeler vi underkategorienavn inden meddelelsesboksfunktionen i den første underkategori og ser hvad der vil ske.

Kode:

 Sub VBA_ByRef1 () Dim A som heltal A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A som heltal) A = A - 100 End Sub 

Trin 12: Kør nu den komplette kode igen. Vi vil se, den anden værdi, der er gemt i variabel A, da 100 blev trukket fra den første værdi 1000. Som et resultat fik vi outputmeddelelsen som 900.

Trin 13: Dette er den største fordel ved at bruge ByRef. Vi behøver ikke at definere flere variabler til et enkelt job. Bare en variabel er nok til at udføre hele opgaven på forskellige måder. Vi kan bruge mere end en ByRef i et enkelt modul.

For at retfærdiggøre, hvad vi har forstået, lad os tilføje en ny ByRef i det samme modul.

Kode:

 Sub VBA_ByRef1 () Dim A som heltal A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A som heltal) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A som heltal) End Sub 

Trin 14: Lad os bruge denne multiplikation i denne underkategori.

Kode:

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

Trin 15: Kompilér og kør koden igen. Vi vil se, at værdien opnået fra ovenstående trin, da 900 nu ganges med 2 for at få 1800 som output.

Excel VBA ByRef - Eksempel # 2

I dette eksempel vil vi se, hvordan ByRef fungerer med andre slags heltal.

Trin 1: Åbn et modul, og skriv underkategorien som vist nedenfor.

Kode:

 Sub VBA_ByRef4 () End Sub 

Trin 2: Definer nu en variabel A som dobbelt. Dette tillader os at bruge decimalværdier.

Kode:

 Sub VBA_ByRef4 () Dim A Som dobbelt ende Sub 

Trin 3: Tildel en hvilken som helst decimalværdi til variabel A.

Kode:

 Sub VBA_ByRef4 () Dim A Som dobbelt A = 1, 23 End Sub 

Trin 4: Brug igen meddelelsesfeltet til at se den værdi, der er gemt i variabel A.

Kode:

 Sub VBA_ByRef4 () Dim A Som dobbelt A = 1, 23 MsgBox A End Sub 

Hvis vi nu kører koden, får vi 1, 23 som output.

Trin 5: På en anden måde vil vi bruge funktion til at definere ByRef som dobbelt med variabel A.

Kode:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub Funktion AddTwo (ByRef A As Double) Som Double End Funktion 

Trin 6: Føj nu et hvilket som helst tal til variabel A. Lad os sige, at det er 10.

Kode:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub Funktion AddTwo (ByRef A As Double) Som Double A = A + 10 End Funktion 

Trin 7: Og brug igen denne definerede ByRef-funktion i den første underkategori. Her ser vi to meddelelsesbokse, den ene for variabel A og den anden for ByRef.

Kode:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub Funktion AddTwo (ByRef A As Double) Som Double A = A + 10 End Funktion 

Trin 8: Det samme afspejles også i meddelelsesfeltet.

Trin 9: Og i den næste kørsel giver den merværdien 10 til den oprindelige variabelværdi på 1, 23 som vist nedenfor.

Dette er, hvordan VBA Byref henviser til den definerede værdi én gang og derefter udfylder output som pr. Den nye betingelse.

Fordele og ulemper ved VBA ByRef

  • Når du skriver store koder, sparer det meget tid ved at overveje den allerede definerede variabel, så dens værdi kan bruges igen og igen.
  • Vi behøver ikke at definere mange variabler pr. Formel, som vi vil anvende.
  • Vi kan anvende mange ByRef-betingelser i et enkelt modul uden selv at forstyrre processen.
  • Vi kan ikke bruge VBA Byref i kompleks kodestruktur.

Ting at huske

  • Når man overvejer mere end en ByRef-betingelse, vil output baseres på den sidste underprocedure ByRef, vi definerede, men den tager også hensyn til alle de tidligere ByRef-betingelser, der er brugt tidligere.
  • Den endelige output vil have sekventiel behandlet output. Ikke kun den seneste.
  • Denne proces kan ikke udføres ved at optage makroen.
  • Vi kan se den værdi, der er gemt i hvert trin i variablen ved at samle koden.
  • Når det er gjort, skal du gemme excel-filen som makroaktiveret excel-format, så vi ikke mister kode i fremtiden.

Anbefalede artikler

Dette er en guide til VBA ByRef. Her diskuterer vi, hvordan man bruger ByRef-funktion i Excel ved hjælp af VBA-kode sammen med praktiske eksempler og downloadbar excel-skabelon. Du kan også se på de følgende artikler for at lære mere -

  1. Vejledning til VBA UBound-funktion
  2. OFFSET Excel-funktion (eksempel, anvendelser)
  3. Opret Hyperlink i Excel VBA
  4. Sådan bruges Excel-fyldhåndtag?

Kategori: