VBA klassmoduler

Excel VBA-klassmoduler

När vi använder VBA använder vi de egenskaper och attribut som definieras i VBA men vad händer när vi vill skapa våra egna egenskaper och metoder och attribut, det vill säga när vi använder en klassmodul i VBA så att vi kan få den användardefinierad, en klassmodulen har sin egen uppsättning koder definierade för funktioner, egenskaper och objekt av användaren.

Klassmoduler används för att skapa ett objekt. När vi säger objekt även om det är en variabel så är det små program. När vi skriver koden skriver vi vanligtvis i moduler. Grundmoduler är där vi skriver våra koder för att göra jobbet. Vi använder också användarformulär för att skapa grafiska användargränssnitt.

Men om du tittar på bilden ovan ser du "Klassmodul". Jag vet med säkerhet att du inte har rört det förrän du läser det här inlägget. Du måste undra vad som är den här VBA-klassmodulen när allt jobbet kan göras med hjälp av vår vanliga modul.

Vad är klassmodulen?

Klassmoduler tillåter en användare att skapa sitt eget objekt precis som hur vi har inbyggda objekt i vanliga moduler som "Arbetsblad", "Arbetsböcker", "Räckvidd" och så vidare.

Så här med hjälp av en klassmodul kan vi skapa anpassade objekt.

Klassen har en direkt relation med objekt. Till exempel har du ett maskindiagram för att bygga en maskin, men kom ihåg att det inte är en maskin ännu och med hjälp av det här maskindiagrammet kan vi bygga många sådana maskiner.

Till exempel om du vill lista ut olika maskinvarumärken för att lista ut egenskaperna hos olika modeller.

I maskinen har vi ett varumärke, serienummer, maskinstyrka, maskinens färg, antal motorer som är inblandade i den, motorbränsletyp, etc. ... På tekniskt språk kallas dessa ”egenskaper”.

Med avseende på maskinens egenskaper kan vi starta, vi kan stänga av, vi kan öka motorns hastighet, vi kan pausa osv ... Och dessa kallas "Metoder".

Exempel

Du kan ladda ner den här VBA-klassmallen här - VBA-klassmallen

Låt oss börja rulla eftersom det alltid är tråkigt att läsa upp den teoretiska delen. För att infoga en klassmodul, gå till infoga alternativ i Visual Basic Editor.

Nu kan vi se en klassmodul som nedan.

Detta ser ut som det vi har ovan som en vanlig modul. Ändra klassmodulens namn i egenskapsfönstret. För att se egenskapsfönstret, tryck F4-tangenten .

Förklar nu variabeln som en sträng.

Utan att skapa en delprocedur i vba måste vi deklarera variabeln och även den här gången med ordet "Public", inte "Dim".

Nu kan vi komma åt denna variabel i valfri modul och klassmodul.

Gå nu till en vanlig modul och namnge variabeln.

Efter att ha deklarerat variabeln måste vi tilldela datatypen i VBA, istället för att tilldela datatypen kan vi bara ange namnet på klassmodulen, dvs. CM

Nu med variabeln "k" kan vi komma åt den offentliga variabeln som vi har definierat i klassmodulen, dvs. "Mitt värde".

Som vi kan se i bilden ovan visar det alternativet variabelnamn från klassmodulen för att tilldela värdet till det.

Visa nu värdet på den tilldelade variabeln i meddelandefältet VBA.

Koda:

 Underklass_exempel () Dim k som ny CM k.MyValue = "Hej" MsgBox k.MyValue End Sub 

Kör den här koden med F5-tangenten eller manuellt för att visa resultatet.

Klassmodul vs objekt

I början av klassmodulen blir alla förvirrade med vad som är klass och vad som är ett objekt.

För att förstå detta, kom ihåg vårt tidigare exempel på ett maskindiagram. Det första vi behöver för att producera en maskin är att vi måste utforma maskinen först och sedan kan flera kopior replikeras med den designen.

Relatera detta nu till vår klassmodul.

  • Här är klassmodulen en design. Och objekt är kopian som skapats av designen.
  • En intressant sak är att vi måste använda ordet ”nytt” för att skapa ett objekt från klassmodulen.

Nedan följer ett exempel på detsamma.

En sak till när vi använder inbyggda objekt som kalkylblad, arbetsböcker och intervallobjekt använder vi inte ordet "nytt"

För att inleda förfarandet med klassmodulen, dessa grundläggande saker du borde veta. I de kommande artiklarna kommer vi att se exemplen på nästa nivå.

Det verkar svårt att förstå detta, ju mer tid du spenderar med en klassmodul kommer du att vänja dig vid det.