VBA-klassemodules

Excel VBA-klassemodules

Wanneer we VBA gebruiken, gebruiken we de eigenschappen en attributen die in VBA zijn gedefinieerd, maar wat gebeurt er als we onze eigen eigenschappen en methoden en attributen willen maken, dat is wanneer we een klassemodule in VBA gebruiken zodat we deze door de gebruiker kunnen definiëren, een class module heeft zijn eigen set codes die door de gebruiker zijn gedefinieerd voor functies, eigenschappen en objecten.

Klasse Modules worden gebruikt om een ​​object te maken. Als we objecten zeggen, ook al is het een variabele, dan zijn dat kleine programma's. Bij het schrijven van de code schrijven we meestal in modules. Basismodules zijn waar we onze codes schrijven om het werk te doen. We gebruiken ook een gebruikersformulier om grafische gebruikersinterfaces te maken.

Maar als je naar de bovenstaande afbeelding kijkt, zie je "Class Module". Ik weet zeker dat je dat niet hebt aangeraakt totdat je dit bericht leest. Je moet je afvragen wat deze VBA-klassemodule is als al het werk kan worden gedaan door onze reguliere module zelf te gebruiken.

Wat is de klassemodule?

Met klassemodules kan een gebruiker zijn eigen object maken, net zoals we ingebouwde objecten hebben in reguliere modules zoals "Werkbladen", "Werkmappen", "Bereik", enzovoort.

Op deze manier kunnen we met behulp van een klassemodule aangepaste objecten maken.

De klasse heeft een directe relatie met objecten. Je hebt bijvoorbeeld een machinediagram om een ​​machine te bouwen, maar onthoud dat het nog geen machine is en met dit machinediagram kunnen we veel van dat soort machines bouwen.

Als u bijvoorbeeld verschillende machinemerken wilt opsommen om de kenmerken van verschillende modellen op te sommen.

In de machine hebben we een merknaam, serienummer, machinevermogen, kleur van de machine, aantal motoren die erbij betrokken zijn, type motorbrandstof, etc.… In technische bewoordingen worden dit "eigenschappen" genoemd.

Met betrekking tot de eigenschappen van de machine: we kunnen starten, we kunnen uitschakelen, we kunnen de snelheid van de motor verhogen, we kunnen pauzeren, enz… En dit worden "Methoden" genoemd.

Voorbeeld

U kunt deze VBA-klassensjabloon hier downloaden - VBA-klassensjabloon

Laten we de bal aan het rollen gaan, want het is altijd saai om het theoretische gedeelte voor te lezen. Om een ​​klassemodule in te voegen, ga naar de optie invoegen in de visuele basiseditor.

Nu kunnen we een klassemodule zien zoals hieronder.

Dit lijkt op degene die we hierboven hebben als een gewone module. Wijzig de naam van de klassemodule in het eigenschappenvenster. Druk op de F4-toets om het eigenschappenvenster te zien .

Declareer nu de variabele als een string.

Zonder een subprocedure in vba aan te maken, moeten we de variabele declareren en ook dit keer met het woord "Public" en niet "Dim".

Nu hebben we toegang tot deze variabele in elke module en klassemodule.

Ga nu naar een gewone module en geef de variabele een naam.

Na het declareren van de variabele moeten we het gegevenstype in VBA toewijzen, in plaats van het gegevenstype toe te wijzen, kunnen we gewoon de naam van de klassemodule geven, dwz CM

Nu we de variabele "k" gebruiken, hebben we toegang tot de openbare variabele die we hebben gedefinieerd in de klassemodule, dwz "Mijn waarde".

Zoals we in de bovenstaande afbeelding kunnen zien, toont het de optie van de variabelenaam uit de klassemodule om de waarde eraan toe te wijzen.

Toon nu de waarde van de toegewezen variabele in het VBA-berichtvenster.

Code:

 Sub Class_Example () Dim k As New CM k.MyValue = "Hallo" MsgBox k.MyValue End Sub 

Voer deze code uit met de F5-toets of handmatig om het resultaat weer te geven.

Klassenmodule versus objecten

In de beginfase van de klassemodule raakt iedereen in de war met wat klasse is en wat een object is.

Denk om dit te begrijpen eens aan ons eerdere voorbeeld van een machinediagram. Het eerste dat we nodig hebben om een ​​machine te produceren, is dat we eerst de machine moeten ontwerpen en daarna kunnen er meerdere kopieën worden gerepliceerd met dat ontwerp.

Breng dit nu in verband met onze klassemodule.

  • Hier is Class Module een ontwerp. En Object is de kopie gemaakt door het ontwerp.
  • Nog een interessant ding is dat we het woord "nieuw" moeten gebruiken om een ​​object te maken vanuit de klassemodule.

Hieronder ziet u een voorbeeld van hetzelfde.

Nog een ding als we ingebouwde objecten zoals werkbladen, werkmappen en bereikobjecten gebruiken, gebruiken we het woord 'nieuw' niet

Om de procedure met de Class Module te starten, moet u deze basiszaken weten. In de komende artikelen zullen we voorbeelden van het volgende niveau zien.

Het lijkt moeilijk om dit te begrijpen, hoe meer tijd je aan een lesmodule besteedt, je eraan went.