VBA globālie mainīgie | Kā pasludināt globālo mainīgo VBA?

Dažas funkcijas ir definētas funkcijas iekšienē un tiek izmantotas funkcijās, un daži mainīgie ir definēti ārpus funkcijām, un tos izmanto visas funkcijas, un šādus mainīgos lielumus izmanto kā globālos mainīgos, piemēram, apakšfunkcijā deklarētie mainīgie ir pazīstams kā globālie mainīgie.

Excel VBA globālais mainīgais

Mainīgā deklarēšana šķiet diezgan vienkārša, taču, lai mums būtu labas rokas, mums ir jāsaprot šo mainīgo darbības joma. Bieži vien mēs katru reizi deklarējam katra makro mainīgos apakšprocedūras ietvaros. Deklarējot vienu mainīgo, mēs to varam izmantot visos makros tajā pašā modulī, kā arī pārējos pašreizējā VBA projekta moduļos. Šajā rakstā mēs parādīsim, kā deklarēt globālos mainīgos programmā Excel VBA.

Kas ir globālie mainīgie programmā Excel VBA?

VBA globālie mainīgie ir mainīgie, kas tiek deklarēti pirms jebkura makro sākuma modulī. Kad mainīgie tiek deklarēti, izmantojot “Public” vai “Global”, tas kļūst par “Global Variable”.

Apakšprocedūras mainīgos nevar izmantot nekur

Mēs parasti deklarējam mainīgo apakšprogrammā vba, izmantojot vārdu “Dim”.

Apskatiet iepriekšējo attēlu. Esmu deklarējis mainīgo “k” kā veselu skaitli apakšprocedūras Global_Example1 ietvaros.

Ja mēs jebkurā laikā izmantojam šo mainīgo šajā apakšprocedūrā. Tomēr es nevaru izmantot šo mainīgo citā apakšprocedūrā ne tajā pašā klases modulī VBA, ne citā modulī.

Kā parādīts iepriekšējā attēlā, mainīgo “k”, kas deklarēts apakšprocedūrā Global_Example1, nevar izmantot apakšprocedūrā Global_Example2.

Tāpat mainīgo “j”, kas deklarēts apakšprocedūrā Global_Example2, nevar izmantot apakšprocedūrā Global_Example1, lai gan abas apakšprocedūras atrodas vienā modulī.

Kā pasludināt globālo mainīgo VBA?

Tālāk ir sniegti veidi, kā deklarēt globālo mainīgo programmā Excel VBA.

# 1 - moduļa mainīgos var izmantot jebkurā tā paša moduļa apakšprocedūrā

Kā redzējām, apakšmoduļu mainīgos nevar izmantot nevienā no moduļiem. Lai tos padarītu pieejamus visām tā paša moduļa apakšprocedūrām, mums ir jādeklarē mainīgie moduļa augšdaļā.

Iepriekš minētajā attēlā mainīgo esmu deklarējis tikai moduļa sākumā. Esmu deklarējis mainīgo “MyNumber” kā veselu skaitli 1. modulī .

Kad moduļa augšpusē deklarētais mainīgais mēs varam izmantot to pašu mainīgo visām pārējām tā paša moduļa apakšprocedūrām, šajā gadījumā visām 1. moduļa apakšprocedūrām varam izmantot mainīgo “Mans numurs” .

Problēma ir tāda, ka mēs tos nevaram izmantot nevienā no citiem moduļiem. Šajā gadījumā mainīgo “MyNumber”, kas deklarēts 1. modulī, nevar izmantot 2. modulī.

 # 2 - Globālos mainīgos var izmantot jebkurā apakšprocedūrā un arī jebkurā modulī

Tagad mēs esam redzējuši divu veidu mainīgo deklarēšanu un to darbības jomu. Interesanti ir tas, ka mēs varam deklarēt mainīgo jebkurā no moduļiem un izmantot visām apakšprocedūrām visos tā paša VBA projekta moduļos.

Lai mainīgais būtu pieejams visām apakšprocedūrām visos moduļos, mums mainīgais lielums ir jādeklarē moduļa augšdaļā, nevis izmantojot vārdu “Dim”, bet izmantojot vārdu “Public” vai “Global”.

Iepriekš redzamajā attēlā redzams, ka mainīgā mainīšanai esmu izmantojis vārdu “Publisks” , nevis mūsu veterānvārdu “Dim”.

Iepriekš redzamajā ekrānuzņēmumā es esmu deklarējis mainīgo 1. modulī. Man ir vēl divi moduļi ar nosaukumu 2. modulis un 3. modulis.

Tā kā mainīgo esmu deklarējis, izmantojot moduļa augšpusē esošo vārdu “Publisks”, tagad šiem mainīgajiem varu piekļūt jebkurā apakšprocedūrā jebkurā tās pašas darbgrāmatas modulī.

Mainīgā deklarēšanai var izmantot ne tikai “Public”, bet arī vārdu “Global”.

Globālais un publiskais ir divi atslēgvārdi, kas deklarē mainīgo un padara tos pieejamus VBA moduļos.

Atceramās lietas

  • Kad Excel makro darbojas ar globālā mainīgā lieluma vērtību, visās apakšprocedūrās mainīgā vērtība ir vienāda.
  • Labāk ir uzturēt noteiktu moduli, lai deklarētu globālos mainīgos VBA un visi mainīgie būtu vienā modulī.
  • Vienīgais veids, kā mēs varam atiestatīt mainīgā lielumu, ir makro koda atiestatīšana, nospiežot apturēšanas pogu.

$config[zx-auto] not found$config[zx-overlay] not found