Kuidas luua ja kasutada VBA klassi mooduleid? (Näited)

Exceli VBA klassi moodulid

Kui kasutame VBA-d, kasutame VBA-s määratletud atribuute ja atribuute, kuid mis juhtub siis, kui soovime luua oma atribuudid, meetodid ja atribuudid, st kui kasutame VBA-s klassi moodulit, et saaksime selle kasutaja määratletud, klassi moodulil on oma koodide komplekt, mille kasutaja on määranud funktsioonide, omaduste ja objektide jaoks.

Klassi mooduleid kasutatakse objekti loomiseks. Kui ütleme objektid, isegi kui see on muutuja, on need väikesed programmid. Koodi kirjutamise ajal kirjutame tavaliselt moodulitesse. Põhimoodulid on need, kuhu me töö tegemiseks koodid kirjutame. Kasutame kasutajavormi ka graafiliste kasutajaliideste loomiseks.

Kuid kui vaatate ülaltoodud pilti, näete "Klassimoodulit". Ma tean kindlalt, et te pole seda enne puudutanud, kui loete seda postitust. Te peate kindlasti mõtlema, mis see VBA klassi moodul on, kui kogu töö saab tehtud meie tavalise mooduli enda abil.

Mis on klassi moodul?

Klassimoodulid võimaldavad kasutajal luua oma objekti just nii, nagu meil on sisseehitatud objektid tavalistes moodulites nagu „töölehed”, „töövihikud”, „vahemik” jne.

Nii saame klassi mooduli abil luua kohandatud objekte.

Klassil on otsesed suhted objektidega. Näiteks on teil masina ehitamiseks masina skeem, kuid pidage meeles, et see pole veel masin ja selle masina skeemi abil saame ehitada palju selliseid masinaid.

Näiteks kui soovite loetleda mitmesugused masinabrändid, et loetleda erinevate mudelite omadused.

Masinas on meil kaubamärk, seerianumber, masina võimsus, masina värv, sellega seotud mootorite arv, mootorikütuse tüüp jne. Tehnilises keeles nimetatakse neid omadusteks.

Masina omaduste osas saame käivitada, välja lülitada, mootori kiirust suurendada, pausi teha jne ... Ja neid nimetatakse meetoditeks.

Näide

Selle VBA klassi malli saate alla laadida siit - VBA klassi mall

Alustame palli veeretamist, sest teoreetilise osa ette lugemine on alati igav. Klassimooduli sisestamiseks minge visuaalse põhiredaktori valiku lisamiseks.

Nüüd näeme klassi moodulit nagu allpool.

See näeb välja sarnane sellele, mis meil on tavalise moodulina eespool. Atribuutide aknas muutke klassi mooduli nime. Atribuutide akna nägemiseks vajutage klahvi F4 .

Nüüd deklareerige muutuja stringina.

VBA-s alamprotseduuri loomata peame muutuja deklareerima ja ka seekord kasutama sõna “Public”, mitte “Dim”.

Nüüd pääseme sellele muutujale juurde mis tahes moodulis ja klassimoodulis.

Nüüd minge tavalisse moodulisse ja nimetage muutuja.

Pärast muutuja deklareerimist peame määrama andmetüübi VBA-s, andmetüübi määramise asemel võime lihtsalt anda klassi mooduli nime, st CM

Nüüd saab muutuja “k” abil juurde pääseda klassimoodulis määratletud avalikule muutujale, st “Minu väärtus”.

Nagu näeme ülaltoodud pildil, näitab see väärtuse määramiseks klassi mooduli muutuja nime valikut.

Nüüd kuvage määratud muutuja väärtus VBA teatekastis.

Kood:

 Alamklassi_näide () Dim k kui uus CM k.MyValue = "Tere" MsgBox k.MyValue End Sub 

Tulemuse kuvamiseks käivitage see kood klahviga F5 või käsitsi.

Klassimoodul vs objektid

Klassimooduli algstaadiumis aetakse kõik segi sellega, mis on klass ja mis on objekt.

Selle mõistmiseks meenutage meie varasemat näidet masinaskeemist. Esimene asi, mida me peame masina tootma, on see, et peame kõigepealt masina kujundama ja seejärel saab selle kujundusega korrata mitu eksemplari.

Seostage see nüüd meie klassi mooduliga.

  • Siin klassi moodul on Design. Ja objekt on kujunduse loodud koopia .
  • Veel üks huvitav asi on see, et peame klassi moodulist objekti loomiseks kasutama sõna “uus”.

Allpool on toodud näide samast.

Veel üks asi, kui kasutame sisseehitatud objekte, näiteks töölehti, töövihikuid ja vahemikuobjekte, ei kasuta me sõna „uus”

Klassimooduliga menetluse alustamiseks peaksite teadma neid põhitõdesid. Järgmistes artiklites näeme järgmise taseme näiteid.

Tundub, et sellest on keeruline aru saada, mida rohkem aega klassimooduliga veedate, sellega harjute.


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