VBA globaalsed muutujad Kuidas deklareerida VBA globaalne muutuja?

Mõned funktsioonid on määratletud funktsiooni sees ja neid kasutatakse funktsioonides ning mõned muutujad on määratletud väljaspool funktsioone ja neid kasutavad kõik funktsioonid ning selliseid muutujaid kasutatakse globaalsete muutujatena, näiteks on alamfunktsiooni all deklareeritud muutujad tuntud kui globaalsed muutujad.

Exceli VBA globaalne muutuja

Muutuja deklareerimine näib üsna lihtne, kuid selleks, et neil oleks head käed, peame mõistma nende muutujate ulatust. Sageli deklareerime iga kord iga makro muutujad alamprotseduuri sees. Ühe muutuja deklareerimisega saame seda kasutada kõigis sama mooduli makrodes ja ka praeguse VBA projekti muudes moodulites. Selles artiklis näitame teile, kuidas deklareerida Exceli VBA globaalsed muutujad.

Mis on Exceli VBA globaalsed muutujad?

VBA globaalsed muutujad on muutujad, mis deklareeritakse enne mooduli mis tahes makro algust. Kui muutujad deklareeritakse kas „Avalik” või „Globaalne” abil, saab sellest “Globaalne muutuja”.

Alamprotseduuri muutujaid ei saa kusagil kasutada

Tavaliselt deklareerime alamprogrammi sees oleva muutuja vba-s, kasutades sõna “Dim”.

Vaadake ülaltoodud pilti. Olen deklareerinud muutuja “k” täisarvuna alamprotseduuri Globaalne_näide1 sees.

Kui me kasutame seda muutujat selles alamprotseduuris mis tahes ajahetkel. Kuid ma ei saa seda muutujat kasutada teises alamprotseduuris ei VBA sama klassi moodulis ega mõnes muus moodulis.

Nagu ülaltoodud pildil näidatud, ei saa alamprotseduuris Global_Example1 deklareeritud muutujat „k” kasutada alamprotseduuris Global_Example2.

Samamoodi ei saa alamprotseduuris Global_Example2 deklareeritud muutujat “j” kasutada alamprotseduuris Global_Example1, kuigi mõlemad alamprotseduurid on samas moodulis.

Kuidas deklareerida VBA globaalne muutuja?

Järgnevad on viisid deklareerida ülemaailmne muutuja Exceli VBA-s.

# 1 - moodulimuutujaid saab kasutada sama mooduli mis tahes alamprotseduurides

Nagu nägime, ei saa me üheski moodulis kasutada alamprotseduuri muutujaid. Selleks, et muuta need ühes moodulis kõigi alamprotseduuride jaoks kättesaadavaks, peame muutujad deklareerima mooduli ülaosas.

Ülaltoodud pildil olen muutuja deklareerinud ainult mooduli alguses. Olen deklareerinud moodulis 1 muutuja “MyNumber” täisarvuna .

Kui mooduli ülaosas deklareeritud muutuja saame kasutada sama muutujat kõigi teiste sama mooduli alamprotseduuride jaoks, saame sel juhul kasutada muutujat “MyNumber” kõigi mooduli 1 alamprotseduuride jaoks .

Probleem on selles, et me ei saa neid kasutada üheski teises moodulis. Sellisel juhul ei saa moodulis 1 deklareeritud muutujat “MyNumber” kasutada moodulis 2.

 # 2 - globaalseid muutujaid saab kasutada igas alamprotseduuris ja ka igas moodulis

Nüüd oleme kasutamisel näinud kahte tüüpi muutujadeklaratsiooni ja nende ulatust. Huvitav on see, et võime deklareerida muutuja ükskõik millises moodulis ja kasutada kõigi alamprotseduuride jaoks sama VBA projekti kõigis moodulites.

Selleks, et muuta muutuja kõigi moodulite kõigi alamprotseduuride jaoks kättesaadavaks, peame deklareerima muutuja mooduli ülaosas mitte sõna "Dim", vaid sõna "Public" või "Global" abil.

Ülaltoodud pildil näete, et kasutasin muutuja deklareerimiseks meie veteransõna "Dim" asemel sõna "Public ".

Ülaltoodud ekraanipildil olen deklareerinud muutuja moodulis 1. Mul on veel kaks moodulit nimega moodul 2 ja moodul 3.

Kuna olen muutuja deklareerinud, kasutades mooduli ülaosas sõna „Avalik”, saan nüüd neile muutujatele juurde pääseda sama töövihiku mis tahes mooduli mis tahes alamprotseduuris.

Mitte ainult “Public”, vaid võime muutuja deklareerimiseks kasutada ka sõna “Global”.

Globaalne ja avalik on kaks märksõna, mis deklareerib muutuja ja teeb need VBA moodulites kättesaadavaks.

Asjad, mida meeles pidada

  • Kui Exceli makro töötab globaalse muutujaga, on muutuja väärtus kõigis alamprotseduurides sama.
  • Parem on säilitada konkreetne moodul, et deklareerida globaalsed muutujad VBA-s ja kõik muutujad oleksid ühes moodulis.
  • Ainus viis, kuidas saame muutuja väärtuse lähtestada, on makro koodi lähtestamine stopp-nuppu vajutades.

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