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-malExcel 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 -
- Veiledning for VBA UBound-funksjon
- OFFSET Excel-funksjon (eksempel, bruk)
- Lag Hyperlink i Excel VBA
- Hvordan bruke Excel-fyllhåndtak?