VBA ByRef | Syötä argumentti käyttämällä Excel VBA ByRef -funktiota
Excel VBA ByRef -funktion argumentti
VBA: n ByRef on funktio, jota kutsutaan viitteenä, jossa annamme viitteen kaikkiin koodissamme oleviin argumentteihin, kun teemme mukautettuja toimintoja ja haluamme käyttää minkä tahansa muuttujan arvoa, joka on määritelty aiemmin ennen ByRef-funktion käyttämää funktiota, syntaksin käyttö on yksinkertaista kuin Function Function-Name (ByRef Variable as Data Type).
Byrefiä käyttämällä voimme osoittaa alkuperäisen muuttujan arvon muuttamatta muuttujan arvoa. Tämä on kuin muuttujan arvon välittäminen suoraan VBA-alimenettelylle tai VBA-funktiolle.
Kuinka välittää argumentti VBA ByRef -argumentilla?
Voit ladata tämän VBA ByRef Excel -mallin täältä - VBA ByRef Excel -malliEsimerkki 1
Katso esimerkki alla olevasta VBA-koodista.
Koodi1:
Alimenettely1 () Dim k kuten kokonaisluku k = 50 Menettely2 k MsgBox k End Sub
Koodi2:
Alimenetelmä 2 (ByRef k kokonaislukuna) k = k + 10 loppuosa
Ensimmäisessä menettelyssä olen ilmoittanut muuttujan "k" kokonaisluvuksi.
Sitten olen määrittänyt tälle muuttujalle arvon 50.
Sen jälkeen olen lisännyt uuden rivin eli
Menettely2 k
Tämä on toinen menettelynimi. Tässä menettelyssä olen ilmoittanut sulkeissa olevan muuttujan merkkijonoksi VBA: ssa, mutta olen käyttänyt sanaa "ByRef".
ByRef k kokonaislukuna
Tässä olen määrittänyt muuttujan ”k” arvon arvoksi
k = k + 10
Ok, nyt suoritan koodin vaihe vaiheelta painamalla F8-näppäintä.
Paina F8-näppäintä vielä kaksi kertaa ja siirrä kohdistin muuttujan "k" päälle nähdäksesi muuttujan "k" arvon.
Koska olemme määrittäneet arvoksi 50, se näyttää arvon 50. Nyt se on korostanut rivin Process2 k, joka on toinen menettelynimi.
Jos painan F8-näppäintä nyt, se hyppää pois nykyisestä menettelystä ja siirtyy toiseen menettelyyn.
Nyt kun olemme käyttäneet ByRef-sanaa, se kantoi muuttujan "k" arvon edellisestä menettelystä.
Paina F8-näppäintä kahdesti, jolloin palataan edelliseen alimenettelyyn. Jos huomaat toisessa menettelyssä, olen käyttänyt kaavaa k = k + 10. eli "k" -arvo on 50, lisätään vielä 10, mikä tarkoittaa yhteensä 60.
Nyt koodi on käynnissä ensimmäisessä menettelyssä ja tässä menettelyssä muuttujan "k" arvo on 50. Mutta paina F8-näppäintä ja näet tuloksen viestiruudussa.
Saimme tulokseksi 60 tämän menettelyn oletusarvon 50 sijaan.
Syy, miksi saimme 60, koska toisessa menettelyssä olemme soveltaneet "ByRef" -arvoa, niin se vei yhtälön tuloksen (k = k + 10) nykyiseen menettelyyn.
Tässä ensimmäisen muuttujan "k" arvo on 50 ja toisessa menettelyssä muuttujan "k" arvo on k + 10 eli 60, joka siirretään ensimmäiseen menettelyyn.
Ensimmäisessä menettelyssä muuttujan “k” alkuperäinen arvo oli 50, joten By Ref on muuttanut alkuperäisen arvon 50: stä 60: een suorittamalla yhtälön k = k + 10 eli k = 50 +10 = 60.
Esimerkki 2
Katso nyt vielä yksi esimerkki.
Koodi 1:
Ala P1 () Himmennä Oma numero niin kauan Oma numero = 1 Soita muutos_ByRef (Oma numero) 'Oman numeroni muuttuu Change_ByRef-menettelyllä MsgBox "Oma numero on nyt:" & Oma numero loppu
Koodi 2:
Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 Lopeta alim
Tämä toimii täsmälleen samalla tavalla kuin edellinen koodi.
Aluksi muuttujan ”Oma numero” arvo on 1. Sitten kutsutaan alla olevaa menettelyä sen nimellä
Soita Change_ByRef (Oma numero)
Tässä menettelyssä muuttujan arvo on 14.
Joten, kun se palaa edelliseen menettelyyn, se määrittää muuttujalle uuden arvon 14.