Hva er ByRef i VBA?

Byref i VBA står for “By Reference”. Ved hjelp av VBA Byref kan vi målrette den opprinnelige verdien uten å endre verdien som er lagret i variabler. Med andre ord, vil vi direkte overføre verdien til Sub-prosedyrer i stedet for å gå gjennom de vanlige metodene for å definere og tilordne verdiene til variabler.

I VBA ByRef definerer vi delprosedyren etter at vi har satt regelen for ByRef. Dette kan gjøres under delprosedyren der vi vil skrive koden. I ByRef omdefinerer vi variabelen som brukes i Sub prosedyre. Og det fungerer bare ordentlig når vi kaller ByRef-tilstanden i underprosessen vår.

Hvordan bruke ByRef-funksjonen i Excel VBA?

Nedenfor er de forskjellige eksemplene du kan bruke ByRef-funksjonen i Excel ved å bruke VBA-kode.

Du kan laste ned denne VBA ByRef Excel-malen her - VBA ByRef Excel-mal

Excel VBA ByRef - Eksempel nr. 1

La oss først lære hvordan du setter inn en ByRef i VBA, for dette følger trinnene nedenfor. I dette eksemplet vil vi se hvordan du bruker VBA ByRef til et enkelt matematisk subtraksjonsarbeid. For dette trenger vi en modul.

Trinn 1: Gå til VBA og åpne en modul fra menyvalget Sett inn som vist nedenfor.

Trinn 2: I den nyåpnede modulen, skriv underkategorien til VBA ByRef som vist nedenfor.

Kode:

 Sub VBA_ByRef1 () Slutt Sub 

Trinn 3: Definer nå en variabel, la oss si at den er en A som heltall.

Kode:

 Sub VBA_ByRef1 () Dim A As Integer End Sub 

Trinn 4: Gi hvilket som helst tall til variabel A. La tallet være 1000.

Kode:

 Sub VBA_ByRef1 () Dim A Som heltall A = 1000 End Sub 

Trinn 5: For å skrive ut verdien som er lagret i variabel A, ville vi bruke Msgbox.

Kode:

 Sub VBA_ByRef1 () Dim A Som heltall A = 1000 MsgBox A End Sub 

Trinn 6: Nå kompilerer og kjører vi denne koden ved å klikke på Play-knappen som vist nedenfor. Vi vil få en meldingsboks med verdien lagret i variabel A som 1000 .

Nå bruker du VBA ByRef, oppretter en annen underkategori under den første og tilordner den definerte variabelen fra den første underkategorien med ByRef.

Trinn 7: På dette tidspunktet vil vi la den andre underkategorien bruke verdiene som er lagret i variabel A.

Kode:

 Sub VBA_ByRef1 () Dim A Som heltall A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A som heltall) Slutt Sub 

Trinn 8: Ring variabelen A her igjen og trekk eventuell verdi fra variabel A for å få utdataverdien i den samme variabelen. La oss trekke fra 100 fra verdien til variabel A slik at vi får et målbart tall.

Kode:

 Sub VBA_ByRef1 () Dim A Som heltall A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A Som heltall) A = A - 100 End Sub 

Trinn 9: Hvis vi sammenstiller hvert trinn i koden, vil vi merke at når markøren nådde variabel A, vil vi se at den bare har 0 lagret i den.

Trinn 10: Når markøren nådde End Sub, vil utdataene få 1000 i meldingsboksen.

Trinn 11: Det er fordi vi ikke har tilordnet ByRef til den første underkategorien. Nå vil vi tilordne underkategorinavn før meldingsboksfunksjonen til den første underkategorien og se hva som vil skje.

Kode:

 Sub VBA_ByRef1 () Dim A Som heltall A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A Som heltall) A = A - 100 End Sub 

Trinn 12: Og kjør den fullstendige koden igjen. Vi vil se at den andre verdien som er lagret i variabel A som 100 ble trukket fra den første verdien 1000. Som et resultat fikk vi outputmeldingen som 900.

Trinn 13: Dette er den største fordelen ved å bruke ByRef. Vi trenger ikke å definere flere variabler for en enkelt jobb. Bare en variabel er nok til å utføre hele oppgaven på forskjellige måter. Vi kan bruke mer enn en ByRef i en enkelt modul.

For å rettferdiggjøre det vi har forstått, la oss legge til en annen ByRef i samme modul.

Kode:

 Sub VBA_ByRef1 () Dim A Som heltall A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A Som heltall) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A Som heltall) End Sub 

Trinn 14: La oss bruke multiplikasjon i denne underkategorien.

Kode:

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

Trinn 15: Sett sammen og kjør koden igjen. Vi vil se at verdien oppnådd fra trinnene over da 900 nå multipliseres med 2 for å få 1800 som utgang.

Excel VBA ByRef - Eksempel # 2

I dette eksemplet vil vi se hvordan ByRef fungerer med andre slags heltall.

Trinn 1: Åpne en modul og skriv underkategorien som vist nedenfor.

Kode:

 Sub VBA_ByRef4 () Slutt Sub 

Trinn 2: Definer nå en variabel A som Dobbelt. Dette vil tillate oss å bruke desimalverdier.

Kode:

 Sub VBA_ByRef4 () Dim A As Double End Sub 

Trinn 3: Tildel hvilken som helst desimalverdi til variabel A.

Kode:

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

Trinn 4: Nå bruker du meldingsboksen igjen for å se verdien som er lagret i variabel A.

Kode:

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

Hvis vi kjører koden, vil vi få 1, 23 som utdata.

Trinn 5: På en annen måte vil vi bruke Funksjon for å definere ByRef som Dobbelt med variabel A.

Kode:

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

Trinn 6: Legg nå et hvilket som helst tall til variabel A. La oss si at det er 10.

Kode:

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

Trinn 7: Og bruk igjen denne definerte ByRef-funksjonen i den første underkategorien. Her vil vi se to meldingsbokser, en for variabel A og en annen for ByRef.

Kode:

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

Trinn 8: Det samme vil også gjenspeiles i meldingsboksen.

Trinn 9: Og i neste løp vil den gi merverdien på 10 inn i den opprinnelige variabelverdien på 1, 23 som vist nedenfor.

Dette er hvordan VBA Byref tar referansen til verdien som er definert en gang og fyller deretter utdataene i henhold til den nye tilstanden.

Fordeler og ulemper med VBA ByRef

  • Når du skriver store koder, sparer det mye tid ved å ta i betraktning den allerede definerte variabelen, slik at verdien kan brukes igjen og igjen.
  • Vi trenger ikke å definere mange variabler i henhold til formelen vi ønsker å bruke.
  • Vi kan anvende mange ByRef-forhold i en enkelt modul uten en gang å forstyrre prosessen.
  • Vi kan ikke bruke VBA Byref i kompleks kodestruktur.

Ting å huske

  • Når du vurderer mer enn en ByRef-betingelse, vil utdataene være basert på den siste underprosedyren ByRef vi definerte, men den vurderer også alle ByRef-forholdene som ble brukt tidligere.
  • Endelig utgang vil ha sekvensiell behandlet utgang. Ikke bare den siste.
  • Denne prosessen kan ikke gjøres ved å registrere makroen.
  • Vi kan se verdien som er lagret i hvert trinn i variabelen ved å sette sammen koden.
  • Når du er ferdig, lagrer du excel-filen som makroaktivert excel-format, slik at vi ikke mister kode i fremtiden.

Anbefalte artikler

Dette er en guide til VBA ByRef. Her diskuterer vi hvordan du bruker ByRef-funksjonen i Excel ved å bruke VBA-kode sammen med praktiske eksempler og nedlastbar Excel-mal. Du kan også se på følgende artikler for å lære mer -

  1. Veiledning for VBA UBound-funksjon
  2. OFFSET Excel-funksjon (eksempel, bruk)
  3. Lag Hyperlink i Excel VBA
  4. Hvordan bruke Excel-fyllhåndtak?

Kategori: