VBA -klassemoduler og hvordan du bruker dem

Anonim

Hva er en klasse i VBA?

En klasse er en plan for et objekt som skal opprettes. En klasse i seg selv gjør ingenting, men ved å bruke klasser kan du lage flere identiske objekter som kan utføre operasjoner eller kan brukes som en dataressurs.

I virkeligheten er modellen (design og funksjonalitet) av en bil en klasse, og selve bilen er et objekt i den klassen. I klassen definerer vi hva bilen har i den og hva den kan gjøre. For eksempel har en bil 4 hjul, 5 gir, ratt osv. Dette er attributter/egenskaper. Vi definerer også hva en bil kan gjøre, som å gå fremover, bakover, svinge osv. Dette er funksjoner i bilklassen. Et bilobjekt som er opprettet med bilklasse, vil ha alle disse egenskapene. Hvis du definerer en bil som har 5 hjul enn en bil som er laget med denne klassen, vil ha 5 hjul. Du skjønner poenget.

Nok med teori, la oss nå se hvordan du kan bruke en klassemodul i VBA.

Bruke Excel VBA -klassemodul

Mens du jobber i VBA, må du ha brukt Range ("A1"). Velg. Rekkevidden er forhåndsdefinert klasse i VBA. Select er en av funksjonene i Range -klassen som velger det angitte området. På samme måte er Debug klasse i VBA, og utskrift og påstand er metodene. Regneark, arbeidsbøker, område osv. Alle er VBA -klasser som vi bruker i våre subs.

Lag din egen klasse

Først må vi legge til en klassemodul i VBA

Trykk ALT+F11 tastekombinasjon for å åpne Excel VBA -editor.

    • Høyreklikk på prosjektutforsker. Flytt markøren til Sett inn-> Klassemodul. Klikk på den. Det samme kan gjøres fra Sett inn -menyen.

    • Klassen vil bli lagt til i mappen "Klassemodul". Standardnavnet er som class1, class2, og så videre. Du kan endre klassens navn fra eiendomsvinduet. La oss nevne klassen vår "Velkommen".

  • La oss nå legge til noen attributter til klassen vår. Siden jeg vil at disse attributtene skal være tilgjengelige for publikum, har jeg bruk tilgjengelighetsoperatør offentlig.
    Offentlig navn As String Public var1 As Integer Public var2 As Integer 
  • La oss nå legge til en funksjon i denne klassen. Jeg vil ha en funksjon som sier Hei! til brukeren. For å gjøre det, legg til en sub og navngi den sayHiTo.
    Sub sayHiTo (bruker som streng) navn = bruker MsgBox ("Hei!" Og navn) Avslutt sub 
  • La oss nå bruke klassen i en modul. Sett inn en ny modul hvis du ikke har noen. Skriv en sub. Jeg har kalt sub -testen min.
    Deltest () Dim wc As New Welcome 'Deklarert og initialisert velkomstobjekt wc.sayHiTo ("Jack")' brukte sayHiTo -metode for velkomstobjekt. Slutt Sub 
  • Kjør denne undertesten med F5 -tasten. Det vil be "Hei! Jack" på Excel -arbeidsbok.

Hvordan virker det?

I undersøkelsen har vi laget et objekt "wc" av Velkommen klasse. Et objekt blir opprettet i VBA på to metoder. vi kjører koden, Test sub lager et objekt wc i velkomstklassen. Dette objektet har alle egenskapene til velkomstklassen. Vi bruker sayHiTo -metoden i velkomstklassen for å si hei til brukeren.

Objektopprettelse i Excel VBA

    1. Umiddelbar opprettelse

I umiddelbar opprettelse oppretter vi et objekt mens vi deklarerer objektet med den "nye" nøkkelen. I vårt eksempel ovenfor har vi brukt umiddelbar opprettelse.

Dim wc som ny velkomst

2. Forsinket opprettelse
Ved forsinket opprettelse erklærer vi først objektet. Vi bruker ikke det "nye" søkeordet. For å bruke objektet må vi initialisere det med det "nye" søkeordet.

Sub test () Dim wc As Welcome 'wc.sayHiTo ("Jack")' genererer feil siden wc ikke er initialisert ennå 'initialiseringsobjekt Set wc = New Welcome wc.sayHiTo ("Cory")' dette vil fungere. Slutt Sub 

Få tilgang til variabler i en klasse

I eksemplene ovenfor har vi brukt offentlige variabler for klassen, men det er feil å øve. Vi bør unngå å bruke offentlige variabler i en klasse. Nå er spørsmålet hvordan vi får tilgang til variabler i klassen. Tidligere brukte vi subrutine for å få tilgang til navn, men VBA -klasser gir egenskaper som brukes til systematisk å oppdatere og hente private variabelverdier for klassen. Eiendommene er mer elegante enn sub eller funksjon for oppdatering og tilgang til private variabler. La oss se hvordan.

Syntaks for klasseeiendom

Privat navn As String Private var1 As Integer Private var2 As Integer Eiendom La MyName (nm As String) name = nm End Property Eiendom Get MyName () As String MyName = name Slutt eiendom 

La oss bruke dem i en modul.

Deltest () 'opprette klasseobjekt Dim wc som ny velkomst Dim wc1 som ny velkomst' ved hjelp av egenskaper wc.MyName = "Exceltip.com" wc1.MyName = "ExcelForum.com" Debug.Print wc.MyName Debug.Print wc1. MyName End Sub 

Når du kjører denne testunderen, får du skrevet ut to navn for to objekter i "Velkommen" -klassen.

Hvordan egenskaper er forskjellige fra sub og funksjoner

Legg merke til i eksemplet ovenfor at vi har brukt MyName -egenskapen som en variabel. Vi initialiserte verdien av "Navn" -variabelen bare ved å skrive wc.MyName = "assdf". Denne kommandolinjen ble kalt eiendommenEiendom Få mitt navn () som streng. Vi passerte ingen verdi i parentes som vi gjorde i begynnelsen.

På samme måte brukte vi kommandoen for å skrive ut verdiene til "Navn" -variabelenDebug.Print wc.MyName. Er det ikke så enkelt som normal variabelinitialisering? Den eneste forskjellen er at du kan gjøre mye ieiendom segmentet. Du setter datavalidering, beregning, kommunikasjon, etc., og brukeren vil bare se resultatet.

En annen forskjell er at vi kan bruke samme navn på eiendommen til la og del. Dette gjør det lettere og mindre forvirrende.

Så ja gutta, dette var et enkelt eksempel på en klassemodul i Excel VBA. Dette er bare toppen av isfjellet, det er mye juice i dette emnet som vi vil utforske i senere artikler. Vi vil utforske hver enkelt av dem på en enklest mulig måte. Jeg håper jeg var forklarende nok til å få deg til å forstå dette. Hvis du er i tvil om dette emnet eller et annet Excel VBA -emne, kan du nevne det i kommentarfeltet nedenfor.

Importer en modul fra en fil ved hjelp av VBA i Microsoft Excel | Lær hvordan du importerer hele modulen fra en annen fil ved hjelp av VBA.

Opprett en ny modul ved hjelp av VBA i Microsoft Excel | Du kan bruke en modul til å lage en annen modell i VBA. Dette kan hjelpe deg med å minimere tilleggsarbeidet.

Legg til en prosedyre i en modul ved hjelp av VBA i Microsoft Excel | Bruk denne VBA -koden for å legge til prosedyrer i moduler automatisk.

Populære artikler:

50 Excel -snarveier for å øke produktiviteten | Bli raskere på oppgaven din. Disse 50 snarveiene får deg til å jobbe enda raskere med Excel.

VLOOKUP -funksjonen i Excel | Dette er en av de mest brukte og populære funksjonene til excel som brukes til å slå opp verdi fra forskjellige områder og ark.

COUNTIF i Excel 2016 | Tell verdier med betingelser ved hjelp av denne fantastiske funksjonen. Du trenger ikke filtrere dataene dine for å telle spesifikk verdi. Countif -funksjonen er avgjørende for å forberede dashbordet.

Slik bruker du SUMIF -funksjon i Excel | Dette er en annen viktig funksjon på dashbordet. Dette hjelper deg med å oppsummere verdier på spesifikke forhold.