Crearea și folosirea claselor

O clasă este definiția formală a unui obiect - de obicei, a unui obiect personalizat. Prin definirea claselor, puteți crea propriile obiecte personalizate. O clasă este, în esență, un șablon pentru un obiect: după ce ați definit clasa din cod, VB va crea apoi obiecte bazate pe ea atunci când se execută codul.

Relația dintre clasă și obiect este uneori descrisă ca fiind similară unui tăietor de prăjituri și a unei prăjituri sau a unui model și a caselor bazate pe modelul respectiv. Primul element este o descriere, iar al doilea este descrierea adusă la viață.

Un alt mod de a gândi distincția dintre clasă și obiect este să reamintim distincția dintre timpul de proiectare și timpul de execuție. Puteți crea o clasă în timpul proiectării prin scrierea codului care descrie obiectul (sau mai multe obiecte). Clasa va apărea în timpul rulării atunci când se execută codul clasei.

Expresia apare în viață este exprimată mai formal după cum urmează: un obiect este instanțiat. (O instanță - obiectul clasei apare în timpul rulării.)

Ce se poate face cu ajutorul Modulelor de clasă?

Programarea înseamnă a spune computerului cum să proceseze anumite informații.

Informațiile care urmează să fie procesate pot fi stocate în diverse locuri. De exemplu, le puteți stoca într-o bază de date la care codul are acces. Sau puteți să le introduceți în cod, cum ar fi stocarea informației Donald într-o variabilă de tip String:

MyString = "Donald"

A doua jumătate a procesării informațiilor este executarea codului care manipulează informațiile (datele). De exemplu, mai jos prelucrăm câteva date prin calculul lungimii unui șir:

MsgBox Len(myString)

Un lucru interesant în privința obiectelor este că ele nu numai că pot procesa informații; ele le pot conține. Își pot ascunde datele (proprietățile) sau procesarea (metodele) lor de programarea externă. Această ascundere se numește încapsulareencapsulation.

Puteți utiliza obiecte pentru a stoca informații, pentru a prelucra informațiile și pentru a face informațiile accesibile în mod selectiv (ascunse sau nu, după cum specifică programatorul) diferitelor alte obiecte dintr-o aplicație.

Luați în considerare care este aplicarea cea mai reușită – programarea orientată pe obiecte (sau OOP): controalele care pot fi puse într-un formular, cum ar fi TextBox sau Label pe care le-am explorat în secțiunile „Crearea de casete de dialog simple” și „Crearea de formulare complexe”.

O etichetă (Label) este un obiect care are un set de proprietăți, care poate fi vizualizat atât ca date cât și ca capabilități de procesare. Când la o etichetă îi atribuiți valoarea 33 la proprietatea Left, spuneți, că eticheta se mută automat în acea locație din formular.

Nu ați făcut nicio programare pentru ca să aibă loc această mișcare. Doar ați trecut poziția dorită pentru acel obiect, iar capacitatea internă a obiectului de a se deplasa a preluat și a îndeplinit sarcina necesară pentru ca să se realizeze acest lucru. Aceasta este încapsularea: Programarea care mișcă o etichetă este ascunsă de lumea exterioară (altfel zis: ascunsă de alți programatori). Obiectul are propriile sale capacități. Și conține și propriile sale date interne (tipul de linie care încadrează o Etichetă, lățimea implicită a acesteia, culoarea fundalului etc.).

Când OOP este aplicată la concepte mai abstracte, cum ar fi traducerea programării procedurale (sub-funcții și funcții) în OOP (obiecte), rezultatele sunt amestecate. Unii programatori preferă OOP, alții nu. OOP a devenit destul de popular în multe cercuri de programare profesionale, dar chiar și după decenii de implementare, OOP încă provoacă controverse. Pentru joburi mici, cum ar fi macrocomenzile simple, OOP este în mod evident exagerat. Pentru proiecte mari, s-ar putea să vă placă caracteristicile organizatorice și de securitate ale OOP. Și, dacă intenționați să intrați în programare profesională, trebuie să înțelegeți cum să o utilizați.

O prezentare scurtă a claselor

Pentru a crea o clasă în VBA, introduceți un modul de clasă într-un proiect (Insert > Class Module) și dați clasei numele cu care o veți accesa. Apoi folosiți fereastra Code pentru a crea codul (declarații constante și variabile, subrutine și funcții) care definesc proprietățile și metodele pe care le va avea clasa. După ce ai terminat, clasa conține toate informațiile de care obiectul personalizat are nevoie pentru a-și îndeplini sarcinile și a stoca datele.

O distincție majoră între un modul de clasă și un modul de cod obișnuit este că într-un modul de clasă nu executați direct codul. În schimb, într-un modul de cod obișnuit, declarați o variabilă obiect de tipul clasei. Apoi utilizați această variabilă pentru a accesa membrii clasei (proprietățile și metodele acesteia) din codul obișnuit.

Conceptul de clase poate fi dificil de înțeles, astfel că secțiunile următoare prezintă un exemplu simplu de clasă care se referă la ceva fizic – o carte. Exemplul descrie o clasă numită Book care conține informații importante despre o carte. În timpul rulării, după crearea obiectului Book, codul adaugă informațiile acestei cărți la obiectul Book.

Cărți întregi încearcă să explice OOP și utilizările sale. Următorul exemplu de clasă funcționează în orice aplicație gazdă VBA.

Planificarea clasei

Înainte de a crea o clasă, se iau următoarele decizii:

  • O clasă descrie un obiect, deci... ce face acest obiect?
  • Ce informații trebuie să conțină clasa pentru ca obiectul să facă ceea ce trebuie să facă? Utilizați variabile și proprietăți pentru a stoca aceste informații. Utilizați variabile pentru a stoca informațiile utilizate în mod privat, intern în interiorul obiectului și proprietăți pentru a pune la dispoziție piese din informațiile care trebuie accesate din afara obiectului. Puteți crea proprietăți numai în citire și citire/scriere.
  • Ce capacități ar trebui să aibă acest obiect? Lucrurile pe care le poate face o clasă, comportamentele sale, se numesc metode. Creați subrutine și funcții pentru a implementa metodele clasei - sub-rutine pentru metodele care nu returnează nicio valoare după ce își fac treaba și funcții pentru metodele care returnează o valoare după executare.

Obiectele bazate pe clasa Book vor conține informații despre un proiect de carte. Rețineți că am spus obiecte, la plural. O singură clasă poate crea tot atâtea obiecte în timpul perioadei de execuție dorite de programator, la fel cum un singur tăietor de prăjituri poate tăia mai multe prăjituri. Sau ca un singur model care poate fi folosit pentru a construi mai multe case în oraș.

Dacă sunteți programator la bibliotecă, puteți utiliza clasa Book pentru a genera mii de obiecte Book.

Clasa pe care o vom construi va avea nevoie de proprietăți pentru stocarea informațiilor precum titlul, autorul și prețul și va avea nevoie de o metodă care să afișeze toate aceste informații despre carte.

Crearea unui modul de clasă

Primul pas în crearea clasei este să introduceți un modul de clasă în proiect. Creați un modul de clasă la fel ca la crearea unui modul obișnuit.

În Project Explorer, clic dreapta pe proiectul țintă sau pe unul dintre elementele pe care le conține și alegeți Insert> Class Module din meniul contextual. Alternativ, se poate alege Insert> Class Module din bara de meniu a editorului sau cu clic pe butonul Insert din bara de instrumente Standard și Class Module din lista verticală.

Editorul VBA creează un nou modul de clasă numit Classn (unde n este numărul consecutiv mai mare care nu este încă folosit pentru a numi un modul de clasă) și deschide o fereastră de cod pentru acesta. Dacă proiectul nu conține deja un folder Class Modules, VBA adaugă unul și acesta apare în Project Explorer.

Dacă aveți bifată opțiunea Require Variable Declarations (în pagina Editor a casetei de dialog Tools> Options din editorul VBA), Editorul VBA plasează automat o instrucțiune Option Explicit în zona declarațiilor în partea de sus a foii de cod pentru clasă, la fel ca la un modul obișnuit.

Dacă nu aveți bifată opțiunea Require Variable Declarations, puteți introduce instrucțiunea Option Explicit pentru a vă forța să declarați variabile în mod explicit.

Numele clasei

Acum schimbați numele clasei în ceva mai sugestiv decât Classn. Apăsați F4 pentru a afișa fereastra Proprietăți (dacă nu este deja afișată) și introduceți noul nume în caseta de text (Name). Scrieți un nume sugestiv, deoarece îl veți utiliza în cod și veți dori ca scopul său să fie ușor de înțeles. În exemplul nostru, numele clasei este Book. Apăsați Enter sau faceți clic în altă parte în fereastra Visual Basic Editor pentru ca modificarea să aibă efect.

Setarea proprietății Instancing

Proprietatea Instancing stabilește dacă un modul de clasă este vizibil (poate fi inițiat – adus la viață) dintr-un proiect exterior.

Reamintim că un proiect extern trebuie să facă referire mai întâi la proiectul în care se află modulul clasei, înainte ca să fie posibil accesul la obiectele acelui proiect. Referirea se realizează prin Tools> References din editor.

Setarea implicită, 1 - Private, împiedică alte proiecte să vadă modulul clasei și să lucreze cu instanțe (obiecte) din acea clasă. Cu alte cuvinte, obiectul este încapsulat, ascuns.

Cealaltă setare este 2 - PublicNonCreatable și permite unui proiect exterior să vadă clasa. Totuși, proiectul exterior, chiar cu o referință, nu poate crea instanțe (crea obiecte) din clasă. Instanțierea trebuie să aibă loc în proiectul care găzduiește clasa.

Deci, pentru ca un proiect să acceseze un obiect din alt proiect, trebuie îndeplinite trei condiții:

  • Proprietatea de instanțiere a proiectului care conține obiectul trebuie să fie setată la PublicNonCreatable.
  • Proiectul care conține obiectul trebuie să fi inițiat acel obiect.
  • Proiectul exterior trebuie să fi stabilit o referire la proiectul care conține obiectul.

Pentru a permite accesul unui proiect extern la instanțele unei clase (obiecte), setați proprietatea Instancing pe 2 - PublicNonCreatable. În caz contrar, lăsați intactă setarea implicită 1 - Private. Cu setarea implicită Private, numai proiectul care are clasa poate accesa obiecte instanțiate din acea clasă.

Declararea de variabile și constante pentru clasă

După setarea proprietății Instancing, ar trebui să declarați variabilele și constantele de care va avea nevoie clasa pentru operațiunile sale interne.

Aceste declarații funcționează la fel ca declarațiile pe care le-ați văzut până acum în carte, cu excepția faptului că probabil veți dori să utilizați o convenție de denumire pentru a indica faptul că variabilele și constantele aparțin unei clase și nu unei proceduri. Vom folosi prefixul Book pentru constante și variabile pentru indica programatorului că fac parte din clasa Book.

Clasa Book folosește declarațiile afișate în următorul fragment de cod pentru a declara o constantă (bookName) și cinci variabile (bookTitle, bookAuthor, bookPages, bookPrice și bookPublicationDate) de diferite tipuri de date:

Const BookName = "Book Project"
Dim BookTitle As String
Dim BookAuthor As String
Dim BookPages As Long
Dim BookPrice As Currency
Dim BookPublicationDate As Date

Adăugarea de proprietăți la clasă

Acum să adăugăm proprietăți clasei. Tabelul urm[tor afișează proprietățile pe care le folosește clasa Book.

Proprietățile unei clase se pot crea în două moduri. Primul mod este mai puțin formal decât al doilea, dar vă oferă un control mai mic asupra proprietăților.

Crearea unei proprietăți folosind o variabilă Public

Un mod de a crea o proprietate în cod este de a declara o variabilă publică în modulul clasei. Făcând acest lucru, se creează o proprietate de citire/scriere cu numele variabilei. De exemplu, instrucțiunea care urmează (când este introdus într-un modul de clasă) creează o proprietate booleană de citire/scriere numită HardCover:

Public HardCover As Boolean

Utilizarea unei variabile publice ca aceasta este o modalitate rapidă de a crea o proprietate, dar este un pic limitată: trebuie citită/scrisă. Nu puteți alege să faceți proprietatea numai pentru citire (sau numai pentru scriere). Mai mult, nu puteți executa niciun alt cod atunci când codul programului setează sau returnează valoarea proprietății.

După declararea unei variabile publice, codul poate apoi seta și returna valoarea proprietății în mod obișnuit. De exemplu, dacă am creat proprietatea booleană HardCover într-o instanță numită MastVBA din clasa Book. Următoarele instrucțiuni setează (stochează, scriu date în) proprietatea și apoi afișează o casetă de mesaj returnând (citind valoarea din) proprietatea:

MastVBA.HardCover = False 
MsgBox MastVBA.HardCover

Aici este ilustrat ceva special. Numele clasei este Book, dar observați că numele unui obiect inițiat din această clasă este MastVBA. Obiectele - pot fi multe derivate dintr-o clasă dată - vor avea fiecare numele său individual. Obiectele instanțiate nu ar trebui să aibă același nume cu clasa din care sunt create.

Crearea unei proprietăți folosind procedurile de proprietate

Al doilea mod mai formal și mai flexibil de a crea o proprietate este prin utilizarea procedurilor de proprietate. Există trei tipuri de proceduri de proprietate - Let, Get și Set:

  • O procedură de proprietate Let atribuie o valoare unei proprietăți. O scrie.
  • O procedură de proprietate Get returnează valoarea dintr-o proprietate. O citește.
  • O procedură de proprietate Set creează o referință la un obiect. (Acest lucru este similar cu modul în care creați o variabilă obiect în proceduri obișnuite, non-obiect.)

De obicei, utilizați aceste proceduri în perechi, asociind proprietatea Get a unei proceduri cu proprietatea Let a altei proceduri. Aceasta creează o capacitate de citire / scriere. Sau asociați proprietatea Set a unei proceduri cu proprietatea Let a altei proceduri. Dacă utilizați o proprietate Get a unei proceduri de una singură, proprietatea respectivă va fi numai pentru citire - read-only.

Atribuirea unei valori unei proprietăți cu procedura Property Let

Pentru a permite codului exterior să atribuie o valoare proprietății unui obiect, utilizați procedura Property Let. Sintaxa pentru procedura Property Let este următoarea:

Property Let name ([arglist,] value)
[statements]
End Property

Acestea sunt componentele sintaxei:

  • Cuvântul cheie Property începe procedura, iar cuvintele cheie End Property încheie procedura.
  • name este un argument necesar care specifică numele procedurii de proprietate care a fost creată. Dacă creați, de asemenea, o procedură de proprietate Get în pereche pentru această proprietate, utilizați același nume ca și procedura de proprietate Let.
  • arglist este un argument necesar care enumeră argumentele transmise procedurii.

Aici este necesară o listă de argumente, deoarece o procedură Let este proiectată pentru a atribui o valoare sau valori acestei proprietăți. Deci, codul exterior trebuie să furnizeze cel puțin o valoare. Dacă arglist conține mai multe argumente, ele sunt separate cu virgule.

De exemplu, următoarea procedură Property Let crează proprietatea Title de tip String, atribuind argumentul NewTitle și transmițând valoarea sa la variabila bookTitle:

Property Let Title(NewTitle As String) 
bookTitle = NewTitle 
End Property 

Dacă nu adăugați o procedură Property Get pentru Title, proprietatea denumită Titlu va fi numai pentru scriere. Proprietățile numai pentru scriere nu sunt utile pe scară largă, așa că următorul pas este să scrieți cod care să citească valoarea din proprietate. Apoi devine o proprietate de citire/scriere.

Returnarea unei valori dintr-o Property cu o procedură Property Get

Pentru a returna o valoare de la o proprietate, se folosește procedura Property Get. Sintaxa pentru o procedură Property Get este următoarea:

Property Get name [(arglist)] [As type]
[instructiuni]
End Property

Componentele sintaxei sunt aceleași ca și cele pentru procedura Property Let, cu excepția a două lucruri:

  • Mai întâi, Property Get adaugă argumentul opțional type, care specifică tipul de date pentru acea proprietate.
  • Apoi, pentru Property Get, argumentul arglist este opțional. Puteți avea argumente pentru procedurile Property Get, dar de obicei nu aveți nevoie de ele. Dacă folosiți argumente, numele lor și tipul de date trebuie să se potrivească cu acelea corespunzătoare procedurii Property Let.

De exemplu, următoarea procedură Property Get creează proprietatea Title de tip String, atribuindu-i conținutul variabilei bookTitle:

Property Get Title() As String 
Title = bookTitle 
End Property

Dacă procedura Property Get a existat singură (fără a fi asociată cu o procedură corespunzătoare Property Let), aceasta ar fi o proprietate numai în citire. Utilizați doar Property Get dacă nu doriți să permiteți codului exterior să modifice această proprietate în niciun fel.

Cu toate acestea, deoarece în secțiunea anterioară l-am asociat cu procedura Property Let Title, acum aveți o proprietate de citire / scriere.

Atribuirea unui obiect la o proprietate cu procedura Property Set

În loc să atribuiți o valoare unei proprietăți, puteți să îi atribuiți un obiect. Pentru a face acest lucru, utilizați o procedură Property Set în locul unei proceduri Property Let. Sintaxa pentru o procedură Property Set este următoarea:

Property Set name ([arglist,] reference)
[instructiuni]
End Property

Componentele sintaxei sunt aceleași ca și pentru procedura Property Let, cu excepția faptului că Property Set utilizează argumentul de referință în locul argumentului valoric. reference este un argument necesar care specifică obiectul la referință.

De exemplu, următoarea procedură Property Set creează proprietatea obiectului Where care face referire la un interval:

Property Set Where(rngR As Range) 
bookRange = rngR 
End Property

Ambele Set și Let pot fi utilizate cu VARIABILE OBIECT

Pentru o variabilă obiect, puteți utiliza atât o procedură Property Set, cât și o procedură Property Let, dar în cele mai multe cazuri este mai logic să utilizați doar o procedură Property Set.

Proprietățile pentru clasa Book

În codul de mai jos se pot vedea toate proprietățile pentru clasa Book.

1. Option Explicit
2.
3.   Const BookName = "VBA Book Project"
4.   Dim BookTitle As String
5.   Dim BookAuthor As String
6.   Dim BookPages As Integer
7.   Dim BookPrice As Currency
8.   Dim BookPublicationDate As Date
9.
10.   Public Property Let Title(strT As String)
11.   BookTitle = strT
12. End Property
13.
14. Public Property Get Title() As String
15.    Title = BookTitle
16. End Property
17.
18. Public Property Let Author(strA As String)
19.     BookAuthor = strA
20. End Property
21.
22. Public Property Get Author() As String
23.    Author = BookAuthor
24. End Property
25.
26. Public Property Let Pages(intPages As Integer)
27.    BookPages = intPages
28. End Property
29.
30. Public Property Get Pages() As Integer
31.    Pages = BookPages
32. End Property
33.
34. Public Property Let Price(curP As Currency)
35.    BookPrice = curP
36. End Property
37.
38. Public Property Get Price() As Currency
39.    Price = BookPrice
40. End Property
41.
42. Public Property Let PublicationDate(dtePD As Date)
43.    BookPublicationDate = dtePD
44. End Property
45.
45. Public Property Get PublicationDate() As Date
46.    PublicationDate = BookPublicationDate
47. End Property

În codul de mai sus, fiecare proprietate pentru clasa Book este declarată ca Public pentru a putea fi accesibilă public.

Codul ilustrează cum trebuie organizate procedurile perechi punând fiecare procedură Property Let lângă procedura Property Get corespunzătoare: procedura Property Let Title de pe liniile de la 10 până la 12 se potrivește cu procedura Property Get Title de pe liniile de la 14 până la 16, și tot așa pentru procedurile property Author, Pages, Price și PublicationDate.

Punând procedurile în perechi, se poate citi codul mai ușor pentru a vedea procedurile perechi și dacă argumentele lor se potrivesc.

Adăugarea de metode la o clasă

Acum, după ce am creat variabile interne (proprietăți) ca locații pentru a stoca date în obiectul nostru, este timpul să adăugăm niște programări interne care vor prelucra acele date sau datele transmise obiectului. Este timpul să adăugați metodele clasei. Faceți acest lucru prin adăugarea subrutinelor și a funcțiilor necesare. După cum veți vedea la sfârșitul secțiunii, Editorul VBA va afișa o listă a membrilor - proprietăți și metode - a unui obiect creat, sau a obiectelor încorporate în VBA

Subrutinele și funcțiile pe care le creați în cadrul unei clase sunt precum subrutinele și funcțiile pe care le utilizați în modulele de cod obișnuite, care nu sunt obiecte.

Exemplul nostru Clasa Book folosește o singură metodă, ShowInfo, care afișează o casetă de mesaj care arată proprietățile cărții. Codul de mai jos afișează procedura ShowInfo (arată informații).

1. Sub ShowInfo()
2.  Dim strM As String
3.  strM = "Titlu:" & vbTab & BookTitle & vbCr
4.  strM = strM & "Autor:" & vbTab & BookAuthor & vbCr
5.  strM = strM & "Pagini:" & vbTab & BookPages & vbCr
6.  strM = strM & "Pret:" & vbTab & "$" & BookPrice & vbCr
7.  strM = strM & "Data:" & vbTab & Me.PublicationDate & vbCr
8.  MsgBox strM, vbOKOnly + vbInformation, BookName _
9.  & " Informatii"
10. End Sub

Procedura ShowInfo creează un șir care conține informațiile din clasă și apoi afișează șirul într-o casetă de mesaje. Iată ce se întâmplă:

  • Linia 2 declară variabila strM de tip String, pe care procedura o folosește pentru a stoca informațiile pentru argumentul prompt în căsuța de mesaje.
  • Linia 3 adaugă la strM textul Titlu:, un caracter tab, conținutul variabilei BookTitle (care conține titlul cărții în obiect) și un Enter.
  • Linia 4 folosește strM, adăugând informațiile despre autor. De asemenea, linia 5 adaugă informațiile despre numărul de pagini, iar linia 6 adaugă informațiile despre preț (inclusiv caracterul pentru dolar în completare).
  • Linia 7 adaugă data la strM. Cu toate acestea, în loc să folosească variabila internă a clasei (bookPublicationDate) pentru a returna data stocată, apelează proprietatea PublicationDate a obiectului (care este identificată prin cuvântul cheie Me). Acesta este un exemplu: returnarea bookPublicationDate funcționează de asemenea bine. Dar veți vedea diferența când veți prelua informații din obiect: în loc să furnizați variabila, VBA rulează procedura Property Get PublicationDate pentru a returna informațiile.
  • Linia 9 afișează o casetă de mesaje de tip OK care conține șirul strM. Titlul căsuței de mesaje este setat pe BookName (constanta care conține textul Book Project) și Information, iar caseta de mesaj utilizează o pictogramă Information.

Folosirea clasei

Reamintim că nu puteți executa direct codul clasei. Nu puteți pune punctul de inserare în procedura ShowInfo și apăsați F5 pentru a rula codul sau F8 pentru a parcurge codul.

O clasă este o descriere a unui obiect care nu există încă. Din nou, gândiți-vă la modelul pentru o casă.

Deci, înainte de a putea executa sau testa o clasă, trebuie să creați o instanță a clasei. Nu puteți testa instalațiile sanitare într-o casă doar uitându-vă la planuri înainte de a construi casa. Cu alte cuvinte, trebuie să creați un obiect bazat pe șablonul clasei și apoi să testați obiectul.

Pentru a instanția un obiect, scrieți cod într-un modul de cod obișnuit, care nu este obiect (cum ar fi modulele pe care le-am folosit până acum, cum ar fi modulul 1 sau modulul NewMacros).

Pentru a utiliza clasa pe care ați creat-o, creați o nouă instanță a obiectului folosind un cuvânt cheie New. Cuvântul cheie New poate fi folosit fie într-o instrucțiune Dim, fie într-o instrucțiune Set. De exemplu, următoarea instrucțiune creează o nouă variabilă obiect bazată pe clasa Book:

Dim myBook As New Book

Următoarele comenzi declară o variabilă obiect numită bookAnotherBook și apoi îi atribuie obiectului Book o nouă instanță:

Dim bookAnotherBook As Object
Set bookAnotherBook = New Book

Puteți accesa apoi proprietățile și metodele obiectului Book așa cum ar face orice alte proprietăți și metode ale unui obiect VBA (notați sintaxa: objectVariableName.Property). De exemplu, următoarea comandă stabilește proprietatea Price a obiectului bookAnotherBook:

bookAnotherBook.Price = 54.99

Codul de mai jos conține o procedură scurtă numită Class_Test care arată clasa Book în acțiune. Tastați această procedură într-un modul de cod obișnuit (nu un modul de clasă). Și asigurați-vă că modulul în care tastați este în același proiect ca și modulul clasei de carte pe care l-ați creat anterior.

Testarea clasei Book

1.  Sub Class_Test()
2.
3.    Dim myBook As New Book
4.
5.    myBook.Title = "Invatarea VBA din Microsoft Office 2016"
6.    myBook.Price = 49.99
7.    myBook.Author = "Richard Mansfield"
8.    myBook.Pages = 880
9.    myBook.PublicationDate = #8/17/2016#
10.
11.   myBook.ShowInfo
12.
13. End Sub

În listă este prezentat un exemplu despre cum să utilizați o clasă în programarea dvs. Iată ce se întâmplă:

  • Linia 1 începe procedura Class_Test, iar linia 13 o încheie.
  • Linia 2 este un spațiu gol. Linia 3 declară o nouă variabilă obiect numită MyBook din clasa Book. Linia 4 este un alt spațiu gol.
  • Liniile de la 5 la 9 setează cele cinci proprietăți ale obiectului MyBook - Title, Price, Author, Pages și PublicationDate – așa cum se setează proprietățile pentru orice alt obiect. Rețineți că numele obiectului (numele variabilei obiect) este separat de un punct de proprietățile și metodele acelui obiect.
  • Linia 10 este un spațiu gol. Linia 11 invocă metoda ShowInfo a obiectului myBook - din nou, deoarece se invocă o metodă pentru orice alt obiect.

Acum puteți testa obiectul dvs., făcând clic în această procedură pentru a pune acolo cursorul de inserare intermitent și apoi apăsând F5 (rulare) sau F8 (un singur pas). Încercați cu un singur pas pentru a vedea cum are loc instanțierea și modul în care funcționarea interioară a obiectului adaugă informații la proprietăți și observați metoda ShowInfo.

Iată un alt experiment rapid. Observați că funcția Auto List Members din VBA funcționează cu obiecte pe care le creați, precum și cu obiecte încorporate în VBA în sine, cum ar fi obiectul Workbooks din Excel. Nu uitați că dacă în fereastra Code din VBA Editor Excel tastați workbooks. (trebuie să tastați punctul), dintr-o dată se afișează o listă care vă arată toți membrii - proprietățile și metodele - obiectului workbooks. Pentru a adăuga apoi unul dintre acești membri la codul dvs., trebuie doar să faceți clic pe el sau să folosiți tasta săgeată jos pentru a-l selecta, apoi apăsați Enter.

În mod similar, atunci când programați cu obiectul MyBook, tastați MyBook urmat de un punct și se derulează lista membrilor acestui obiect, ca în figura următoare.