VBA-klassemodules en hoe ze te gebruiken

Anonim

Wat is een klasse in VBA?

Een klasse is een blauwdruk voor een te maken object. Een klasse zelf doet niets anders dan door klassen te gebruiken, kunt u meerdere identieke objecten maken die bewerkingen kunnen uitvoeren of als gegevensbron kunnen worden gebruikt.

In het echte leven is het model (design en functionaliteiten) van een auto een klasse en is de auto zelf een object van die klasse. In de klas bepalen we wat de auto in zich heeft en wat hij kan. Een auto heeft bijvoorbeeld 4 wielen, 5 versnellingen, stuur, etc. Dit zijn attributen/eigenschappen. We definiëren ook wat een auto kan doen, zoals vooruit, achteruit, draaien, enz. Dit zijn functies van de autoklasse. Een auto-object dat is gemaakt met autoklasse, heeft al deze eigenschappen. Als u een auto met 5 wielen definieert, heeft een auto die met deze klasse is gemaakt, 5 wielen. Jij krijgt het punt.

Genoeg theorie, laten we nu eens kijken hoe je een klassenmodule in VBA kunt gebruiken.

Excel VBA-klassenmodule gebruiken

Tijdens het werken in VBA moet u Range("A1").select hebben gebruikt. Het bereik is een vooraf gedefinieerde klasse in VBA. De select is een van de functies van de klasse Range die het opgegeven bereik selecteert. Evenzo is Debug klasse in VBA en zijn print en assert zijn methoden. Werkbladen, werkmappen, bereik, etc. zijn allemaal VBA-klassen die we in onze subs gebruiken.

Maak je eigen klas

Eerst moeten we een klassenmodule toevoegen in VBA

Druk op de toetsencombinatie ALT+F11 om Excel VBA-editor te openen.

    • Klik met de rechtermuisknop op de projectverkenner. Verplaats de cursor naar Invoegen--> Klasse-module. Klik erop. Hetzelfde kan worden gedaan vanuit het menu Invoegen.

    • De klas wordt toegevoegd aan de map "Klasmodule". De standaardnaam is zoals class1, class2, enzovoort. U kunt de klassenaam wijzigen vanuit het eigenschappenvenster. Laten we onze klas "Welkom" noemen.

  • Laten we nu enkele attributen aan onze klasse toevoegen. Omdat ik wil dat deze attributen beschikbaar zijn voor het publiek, heb ik use toegankelijkheidsoperator openbaar.
    Publieke naam As String Public var1 As Integer Public var2 As Integer 
  • Laten we nu een functie aan deze klasse toevoegen. Ik wil een functie die Hi zegt! aan de gebruiker. Voeg hiervoor een sub toe en noem deze sayHiTo.
    Sub sayHiTo(user As String) naam = gebruiker MsgBox ("Hi! " & naam) End Sub 
  • Laten we nu klasse in een module gebruiken. Voeg een nieuwe module in als je die nog niet hebt. Schrijf een ondertitel. Ik heb mijn sub Test genoemd.
    Sub test() Dim wc As New Welkom 'Verklaard en geïnitialiseerd Welcome object wc.sayHiTo ("Jack") 'gebruikte de sayHiTo methode van Welcome Object. Einde sub 
  • Voer deze subtest uit met de F5-toets. Het zal "Hi! Jack" vragen in de Excel-werkmap.

Hoe werkt het?

In subtest hebben we een object "wc" van . gemaakt Welkom klas. Een object wordt op twee manieren in VBA gemaakt. we voeren de code uit, Test sub maakt een object wc van de Welcome-klasse. Dit object heeft alle eigenschappen van de klasse Welcome. We gebruiken de methode sayHiTo van de klasse Welcome om de gebruiker gedag te zeggen.

Object maken in Excel VBA

    1. Instant creatie

Bij Instant creatie maken we een object terwijl we het object declareren met de "nieuwe" toets. In ons voorbeeld hierboven hebben we instant creatie gebruikt.

Gedimde wc als nieuw Welkom

2. Vertraagde creatie
Bij uitgestelde creatie declareren we eerst alleen het object. We gebruiken het trefwoord 'nieuw' niet. Om het object te gebruiken, moeten we het initialiseren met het sleutelwoord "new".

Sub test() Dim wc As Welcome 'wc.sayHiTo ("Jack") 'genereert fout omdat wc nog niet is geïnitialiseerd 'object initialiseren Stel wc = Nieuw Welkom wc.sayHiTo ("Cory") 'dit zal werken. Einde sub 

Toegang tot variabelen van een klasse

In de bovenstaande voorbeelden hebben we openbare variabelen voor klasse gebruikt, maar het is verkeerd om te oefenen. We moeten het gebruik van openbare variabelen in een klasse vermijden. Nu is de vraag hoe we toegang krijgen tot variabelen van de klasse. Eerder gebruikten we subroutine om toegang te krijgen tot de naam, maar VBA-klassen bieden eigenschappen die worden gebruikt om de waarden van privévariabelen van de klasse systematisch bij te werken en op te halen. De eigenschappen zijn eleganter dan sub of functie voor het bijwerken en openen van privévariabelen. Laten we eens kijken hoe.

Syntaxis van klasse-eigenschap

Private naam As String Private var1 As Integer Private var2 As Integer Eigendom laat MijnNaam (nm As String) naam = nm End Property Eigendom krijgen MyName() As String MyName = naam End Property 

Laten we ze gebruiken in een module.

Sub test() 'klasse-object maken Dim wc As New Welkom Dim wc1 As New Welkom 'gebruik eigenschappen wc.MyName = "Exceltip.com" wc1.MyName = "ExcelForum.com" Debug.Print wc.MyName Debug.Print wc1. MijnNaam Einde Sub 

Wanneer u deze testsub uitvoert, krijgt u twee namen afgedrukt voor twee objecten van de "Welcome"-klasse.

Hoe eigenschappen verschillen van sub en functies

Merk in het bovenstaande voorbeeld op dat we de eigenschap MyName als variabele hebben gebruikt. We hebben de waarde van de variabele "Naam" geïnitialiseerd door gewoon te schrijven wc.MijnNaam="assdf". Deze opdrachtregel noemde de eigenschap genaamdEigenschap MijnNaam() ophalen als tekenreeks. We hebben geen waarde tussen haakjes doorgegeven zoals we in het begin deden.

Evenzo, om de waarden van de variabele "Naam" af te drukken, gebruikten we commandoDebug.Print wc.MijnNaam. Is het niet zo eenvoudig als normale initialisatie van variabelen? Het enige verschil is dat je heel veel kunt doen in deeigendom segment. Je zet data validatie, berekening, communicatie, etc. en de gebruiker krijgt alleen het resultaat te zien.

Een ander verschil is dat we dezelfde naam van de eigenschap kunnen gebruiken om laten en krijgendeel. Dit maakt het makkelijker en minder verwarrend.

Dus ja jongens, dit was een eenvoudig voorbeeld van een klassenmodule in Excel VBA. Dit is slechts het topje van de ijsberg, er zit veel sap in dit onderwerp dat we in latere artikelen zullen onderzoeken. We zullen ze allemaal één voor één op de gemakkelijkst mogelijke manier verkennen. Ik hoop dat ik voldoende uitleg heb gegeven om u dit te laten begrijpen. Als je twijfels hebt over dit onderwerp of een ander Excel VBA-onderwerp, vermeld dit dan in de opmerkingen hieronder.

Importeer een module uit een bestand met VBA in Microsoft Excel | Leer hoe u de volledige module uit een ander bestand kunt importeren met VBA.

Maak een nieuwe module met VBA in Microsoft Excel | U kunt een module gebruiken om een ​​ander model in VBA te maken. Dit kan u helpen het extra overheadwerk te minimaliseren.

Een procedure toevoegen aan een module met VBA in Microsoft Excel | Gebruik deze VBA-code om automatisch procedures aan modules toe te voegen.

Populaire artikels:

50 Excel-snelkoppelingen om uw productiviteit te verhogen | Word sneller in uw taak. Met deze 50 sneltoetsen werk je nog sneller in Excel.

De VERT.ZOEKEN-functie in Excel | Dit is een van de meest gebruikte en populaire functies van Excel die wordt gebruikt om waarde op te zoeken uit verschillende bereiken en bladen.

AANTAL.ALS in Excel 2016 | Tel waarden met voorwaarden met behulp van deze geweldige functie. U hoeft uw gegevens niet te filteren om een ​​specifieke waarde te tellen. Countif-functie is essentieel om uw dashboard voor te bereiden.

Hoe de SUMIF-functie in Excel te gebruiken | Dit is een andere essentiële functie van het dashboard. Dit helpt u bij het optellen van waarden voor specifieke voorwaarden.