Vad är ByRef i VBA?

Byref i VBA står för “By Reference”. Med hjälp av VBA Byref kan vi rikta in oss på det ursprungliga värdet utan att ändra värdet som lagras i variabler. Med andra ord kommer vi att direkt överföra värdet till Sub-procedurer istället för att gå igenom de vanliga metoderna för att definiera och tilldela värden till variabler.

I VBA ByRef definierar vi delproceduren efter att vi har ställt in regeln för ByRef. Detta kan göras under delproceduren där vi vill skriva koden. I ByRef omdefinierar vi variabeln som används i Sub-proceduren. Och det fungerar bara ordentligt när vi kallar ByRef-tillståndet i vår delprocedur.

Hur använder man ByRef-funktionen i Excel VBA?

Nedan finns de olika exemplen att använda ByRef-funktionen i Excel med VBA-kod.

Du kan ladda ner denna VBA ByRef Excel-mall här - VBA ByRef Excel-mall

Excel VBA ByRef - Exempel # 1

Låt oss först lära oss hur du sätter in en ByRef i VBA, för detta följer stegen nedan. I det här exemplet kommer vi att se hur man använder VBA ByRef för ett enkelt matematiskt subtraktionsarbete. För detta skulle vi behöva en modul.

Steg 1: Gå till VBA och öppna en modul från menyalternativet Infoga som visas nedan.

Steg 2: I den nyöppnade modulen, skriv underkategorin av VBA ByRef som visas nedan.

Koda:

 Sub VBA_ByRef1 () Slut Sub 

Steg 3: Definiera nu en variabel, låt oss säga att det är ett A som heltal.

Koda:

 Sub VBA_ByRef1 () Dim A Som heltal End Sub 

Steg 4: Ge valfritt antal till variabeln A. Låt numret vara 1000.

Koda:

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

Steg 5: För att skriva ut värdet lagrat i variabel A, skulle vi använda Msgbox.

Koda:

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

Steg 6: Nu sammanställer och kör vi den här koden genom att klicka på knappen Spela som visas nedan. Vi får en meddelanderuta med värdet lagrat i variabel A som 1000 .

Tillämpa nu VBA ByRef, skapa en annan underkategori under den första och tilldela den definierade variabeln från den första underkategorin med ByRef.

Steg 7: På detta sätt tillåter vi den andra underkategorin att använda värdena lagrade i variabel A.

Koda:

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

Steg 8: Ring nu variabeln A igen och subtrahera vilket värde som helst från variabel A för att få utgångsvärdet i samma variabel. Låt oss dra 100 från värdet på variabel A så att vi får ett mätbart tal.

Koda:

 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 

Steg 9: Nu om vi sammanställer varje steg i koden kommer vi att märka att när markören nådde variabel A kommer vi att se att den bara har 0 lagrat i den.

Steg 10: När markören nådde End Sub kommer utdata att få 1000 i meddelandefältet.

Steg 11: Det beror på att vi inte har tilldelat ByRef till den första underkategorin. Nu tilldelar vi underkategorinamn innan meddelanderutans funktion i den första underkategorin och ser vad som kommer att hända.

Koda:

 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 

Steg 12: Kör nu den fullständiga koden igen. Vi ser att det andra värdet som lagras i variabel A som 100 dras av från det första värdet 1000. Som ett resultat fick vi outputmeddelandet som 900.

Steg 13: Detta är den största fördelen med att använda ByRef. Vi behöver inte definiera flera variabler för ett enda jobb. Bara en variabel räcker för att utföra hela uppgiften på olika sätt. Vi kan använda mer än en ByRef i en enda modul.

För att motivera, vad vi har förstått, låt oss lägga till en ny ByRef i samma modul.

Koda:

 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 

Steg 14: Låt oss använda multiplikation i denna underkategori.

Koda:

 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 

Steg 15: Kompilera igen och kör koden igen. Vi kommer att se att värdet erhållet från ovanstående steg eftersom 900 nu multipliceras med 2 för att få 1800 som utgång.

Excel VBA ByRef - Exempel # 2

I det här exemplet kommer vi att se hur ByRef fungerar med andra slags heltal.

Steg 1: Öppna en modul och skriv underkategorin enligt nedan.

Koda:

 Sub VBA_ByRef4 () Slut Sub 

Steg 2: Definiera nu en variabel A som dubbel. Detta gör att vi kan använda decimalvärden.

Koda:

 Sub VBA_ByRef4 () Dim A As Double End Sub 

Steg 3: Tilldela valfritt decimalvärde till variabel A.

Koda:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 End Sub 

Steg 4: Använd igen meddelanderutan för att se värdet lagrat i variabel A.

Koda:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub 

Om vi ​​nu kör koden skulle vi få 1, 23 som utgång.

Steg 5: På ett annat sätt kommer vi att använda funktion för att definiera ByRef som dubbel med variabel A.

Koda:

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

Steg 6: Lägg nu till valfritt tal till variabeln. Låt oss säga att det är 10.

Koda:

 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 Function 

Steg 7: Och återigen använda den här definierade ByRef-funktionen i den första underkategorin. Här ser vi två meddelanderuta, en för variabel A och en annan för ByRef.

Koda:

 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 

Steg 8: Samma skulle också återspeglas i meddelanderutan.

Steg 9: Och i nästa körning kommer det att ge mervärdet 10 till det ursprungliga variabla värdet på 1, 23 som visas nedan.

Så här tar VBA Byref referensen till det definierade värdet en gång och fyller sedan ut utgången enligt det nya villkoret.

Fördelar och nackdelar med VBA ByRef

  • När du skriver stora koder sparar det mycket tid genom att ta hänsyn till den redan definierade variabeln, så att dess värde kan användas om och om igen.
  • Vi behöver inte definiera många variabler enligt formeln vi vill använda.
  • Vi kan tillämpa många ByRef-villkor i en enda modul utan att ens störa processen.
  • Vi kan inte använda VBA Byref i komplex kodstruktur.

Saker att komma ihåg

  • När man överväger mer än ett ByRef-villkor kommer utgången att baseras på den sista delproceduren ByRef som vi definierade, men den beaktar också alla ByRef-villkor som tidigare använts.
  • Slututgången kommer att ha sekventiell bearbetad utgång. Inte bara den senaste.
  • Denna process kan inte göras genom att spela in makro.
  • Vi kan se värdet lagrat i varje steg i variabeln genom att sammanställa koden.
  • När du är klar sparar du excel-filen som makroaktiverat excel-format, så att vi inte kommer att förlora koden i framtiden.

Rekommenderade artiklar

Detta är en guide till VBA ByRef. Här diskuterar vi hur man använder ByRef-funktionen i Excel med hjälp av VBA-kod tillsammans med praktiska exempel och nedladdningsbar Excel-mall. Du kan också titta på följande artiklar för att lära dig mer -

  1. Guide till VBA UBound-funktion
  2. OFFSET Excel-funktion (exempel, användningar)
  3. Skapa Hyperlink i Excel VBA
  4. Hur använder jag Excel-handtag?

Kategori: