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-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?

Esimerkki 1

Katso esimerkiksi alla olevaa VBA-koodia.

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 vie 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 Procedure2 k, joka on toinen menettelynimi.

Jos painan F8-näppäintä nyt, se siirtyy nykyisestä menettelystä ja siirtyy toiseen menettelyyn.

Koska olemme käyttäneet ByRef-sanaa, se kantoi muuttujan "k" arvon edellisestä menettelystä.

Paina F8-näppäintä kahdesti. Se palaa edelliseen alimenettelyyn. Jos huomaat toisessa menettelyssä, olen käyttänyt kaavaa muodossa k = k + 10. eli "k" -arvo on 50 ja lisää sitten 10: ää enemmän, eli 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 katso tulos viestiruudussa.

Saimme tulokseksi 60 tämän menettelyn oletusarvon 50 sijaan.

Syy miksi saimme 60, koska toisessa menettelyssä olemme käyttäneet "ByRef" -toimintoa, joten se vei yhtälö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 viedään ensimmäiseen menettelyyn.

Ensimmäisessä menettelyssä muuttujan ”k” alkuperäinen arvo oli 50, joten By 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:

Alimuutos_ByRef (ByRef NewNumber niin pitkä) NewNumber = 14 End Sub

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.

Mielenkiintoisia artikkeleita...