Det første trinnet i å bruke VBA i Excel er å gjøre deg kjent med Visual Basic-editoren (også kjent som VBA-editoren eller VB-editoren).
I denne opplæringen vil jeg dekke alt du trenger å vite om VBA-editoren, samt noen nyttige alternativer du bør vite når du koder i Excel VBA.
Innhold
Hva er Visual Basic Editor i Excel?
Visual Basic Editor er et eget program som er en del av Excel og åpnes hver gang du åpner en Excel-arbeidsbok.Som standard er den skjult, for å få tilgang til den må du aktivere den.
VB-editoren er der VB-koden lagres.
Du kan få kode i VB-editoren på flere måter:
- Når du tar opp en makro, oppretter den automatisk en ny modul i VB-editoren og setter inn koden i den modulen.
- Du kan manuelt skrive inn VB-kode i VB-editoren.
- Du kan kopiere kode fra andre arbeidsbøker eller Internett og lime den inn i VB-editoren.
Åpne VB editor
Det er flere måter å åpne Visual Basic Editor i Excel:
- Bruk hurtigtaster (enkleste, raskeste)
- Bruk utviklerfanen.
- Bruk regnearkfaner.
La oss ta en rask titt på hver enkelt.
Tastatursnarvei for å åpne Visual Basic-editoren
Den enkleste måten å åpne Visual Basic-editoren på er å bruke en hurtigtast – ALT + F11(Hold nede ALT-tasten og trykk på F11-tasten).
Etter å ha gjort dette, vil det åpne et eget vindu for Visual Basic-editoren.
Denne snarveien fungerer som en bryter, så når du bruker den igjen, vil den ta deg tilbake til Excel-applikasjonen (uten å lukke VB-editoren).
Snarveistastene for Mac-versjonen erOpt+F11ellerFn + Opt + F11
Bruk utviklerfanen
Slik åpner du Visual Basic Editor fra båndet:
- Klikk på «Utvikler»-fanen (hvis du ikke ser «Utvikler»-fanen, les hvordan du får tak i den).
- Klikk Visual Basic i kodegruppen.
Bruk regnearkfaner
Dette er en mindre brukt måte å åpne Vb-editoren på.
Gå til en hvilken som helst arkfane, høyreklikk og velg Vis kode.
Denne metoden åpner ikke bare VB-editoren, men tar deg også til kodevinduet for det arkobjektet.
Dette er nyttig når du vil skrive kode som bare gjelder et spesifikt ark.Dette er vanligvis tilfellet for arbeidsarkhendelser.
Anatomi av Visual Basic Editor i Excel
Når du først åpner VB-editoren, kan det virke litt overveldende.
Det er forskjellige alternativer og seksjoner som kan virke helt nye i begynnelsen.
Dessuten har den fortsatt det gamle Excel 97-dagsutseendet.Mens Excel har forbedret seg mye i design og brukervennlighet gjennom årene, har ikke utseendet til VB-editoren endret seg på noen måte.
I denne delen vil jeg lede deg gjennom de forskjellige delene av Visual Basic Editor-applikasjonen.
Merk: Da jeg begynte å bruke VBA for noen år siden, ble jeg overveldet av alle disse nye alternativene og vinduene.Men når du blir vant til VBA, vil du være fornøyd med det meste.Som oftest trenger du ikke bruke alle alternativene, bare én hånd.
Nedenfor er bilder av de forskjellige komponentene i VB-editoren.Disse blir deretter beskrevet i detalj i de følgende delene av denne opplæringen.
La oss nå ta en rask titt på hver komponent og se hva den gjør:
Menylinje
Det er her alle alternativene du kan bruke i VB-editoren.Det ligner på Excel-båndet, der hver fane har faner og alternativer.
Du kan utforske de tilgjengelige alternativene ved å klikke på hvert menyelement.
Du vil legge merke til hurtigtaster som er nevnt ved siden av de fleste alternativene i VB-editoren.Det blir veldig enkelt å bruke VB-editoren når du først har blitt vant til noen hurtigtaster.
verktøylinjen
Som standard har VB-editoren en verktøylinje med noen nyttige alternativer som du kanskje trenger oftest.Det er som Quick Access Toolbar i Excel.Det gir deg rask tilgang til noen nyttige alternativer.
Du kan tilpasse den litt ved å fjerne eller legge til alternativer (ved å klikke på den lille nedpilen på slutten av verktøylinjen).
I de fleste tilfeller trenger du bare standardverktøylinjen når du bruker VB-editoren.
Du kan flytte verktøylinjen over menylinjen ved å klikke på de tre grå prikkene (på begynnelsen av verktøylinjen) og dra dem over menylinjen.
Merk: Det er fire verktøylinjer i VB-editoren - Standard, Debug, Edit og UserForm.Det du ser i bildet ovenfor (og også standarden) er standardverktøylinjen.Du kan få tilgang til andre verktøylinjer ved å gå til Vis-alternativet og holde markøren over Verktøylinjer-alternativet.Om ønskelig kan du legge til en eller flere verktøylinjer i VB-editoren.
Prosjektnettleser
Project Explorer er et vindu til venstre som viser alle objekter som er åpne i Excel.
Når du bruker Excel, er hver åpen arbeidsbok eller tillegg et prosjekt.Hvert av disse elementene kan inneholde et sett med objekter.
For eksempel, i bildet nedenfor, viser Project Explorer to åpne arbeidsbøker (Book1 og Book2) og objektene i hver arbeidsbok (regneark, ThisWorkbook og moduler i Book1).
Det er et plussikon til venstre for objekter som du kan bruke til å skjule listen over objekter eller utvide og vise hele listen over objekter.
Følgende objekter kan være en del av Project Explorer:
- Alle åpne arbeidsbøker – I hver arbeidsbok (også kalt et prosjekt) kan du ha følgende objekter:
- Arbeidarbeid for hvert regneark i bokenbordobjekt
- Dette arbeidsbokobjektet, som representerer selve arbeidsboken
- av hvert diagramarkKartark 對象(Disse er ikke så vanlige som regneark)
- 模塊- Det er her koden som genereres ved hjelp av makroopptakeren ligger.Du kan også skrive eller kopiere og lime inn VBA-kode her.
- Alle åpne tillegg
Tenk på Project Explorer som et sted å skissere alle objekter som er åpne i Excel på et gitt tidspunkt.
Tastatursnarveien for å åpne Project Explorer erKontroll + R(Hold nede kontrolltasten, og trykk deretter på R).For å lukke den, klikker du bare på lukk-ikonet i øvre høyre hjørne av Project Explorer-vinduet.
Merk: For hvert objekt i Project Explorer er det et kodevindu der du kan skrive kode (eller kopiere og lime inn fra et sted).Kodevinduet vises når du dobbeltklikker på et objekt.
Egenskaper vindu
Egenskaper-vinduet er der du kan se egenskapene til det valgte objektet.Hvis du ikke allerede har vinduet Egenskaper, kan du bruke hurtigtasten F4 (eller gå til Vis-fanen og klikk Egenskaper-vinduet) for å få det.
Egenskaper-vinduet er et flytende vindu som du kan forankre i VB-editoren.I eksemplet nedenfor har jeg forankret den under Project Explorer.
Egenskapsvinduet lar oss endre egenskapene til det valgte objektet.For eksempel, hvis jeg vil at arket skal være skjult (eller veldig skjult), kan jeg gjøre det ved å endre Visible-egenskapen til det valgte arkobjektet.
kodevindu
Hvert objekt som er oppført i Project Explorer har et kodevindu.Du kan åpne et objekts kodevindu ved å dobbeltklikke på objektet i Project Explorer-området.
Kodevinduet er der du skriver kode eller kopierer og limer inn kode fra andre steder.
Når du tar opp en makro, går dens kode inn i modulens kodevindu.Excel setter automatisk inn en modul for å legge inn koden din når du tar opp en makro.
Umiddelbart vindu
Umiddelbart vindu brukes hovedsakelig for feilsøking av kode.En måte jeg bruker Immediate Window på er å bruke Print.Debug-setningen i koden min og deretter kjøre koden.
Det hjelper meg med å feilsøke koden min og identifisere hvor koden min sitter fast.Hvis jeg får resultatet av Print.Debug i det umiddelbare vinduet, vet jeg at koden er gyldig i det minste opp til den linjen.
Hvis du er ny til VBA-koding, kan det ta litt tid å feilsøke ved å bruke det umiddelbare vinduet.
Som standard er det umiddelbare vinduet ikke synlig i VB-editoren.Du kan bruke tastatursnarveien Control + G for å få den (eller du kan gå til Vis-fanen og klikke på Umiddelbart vindu).
Hvor du skal legge til kode i VB-editoren
Jeg håper du nå har en grunnleggende forståelse av hva VB-editoren er og alle dens deler.
I denne delen av opplæringen skal jeg vise deg hvor du kan legge til VBA-kode i Visual Basic-redigeringsprogrammet.
Det er to steder å legge til VBA-kode i Excel:
- Objektets kodevindu.Disse objektene kan være arbeidsbøker, regneark, brukerskjemaer osv.
- Kodevinduet for modulen.
Modulkodevindu vs objektkodevindu
La meg først raskt finne ut forskjellen mellom å legge til kode i en modul og å legge til kode i målkodevinduet.
Når du legger til kode til et objekt, avhenger det av en handling på det objektet som vil utløse koden.For eksempel, hvis du ønsker å vise alle regnearkene i arbeidsboken så snart den ble åpnet, vil koden gå inn i ThisWorkbook-objektet (som representerer arbeidsboken).
I dette tilfellet er utløseren å åpne arbeidsboken.
På samme måte, hvis du ønsker å beskytte et ark umiddelbart etter aktivering av et annet ark, vil koden gå til arkkodevinduet.
Disse triggerne kalles hendelser, og du kan knytte kode som skal utføres når hendelsen inntreffer.
I stedet må koden i modulen kjøres manuelt (eller kan også kalles fra andre underrutiner).
Når du tar opp en makro, oppretter Excel automatisk en modul og setter inn den registrerte makrokoden i den.Hvis du nå må kjøre denne koden, må du kjøre makroen manuelt.
Legg til VBA-kode til modulen
Mens opptak av en makro automatisk oppretter en modul og setter inn koden i den, er det noen begrensninger når du bruker makroopptakeren.Den kan for eksempel ikke bruke løkker eller If Then Else-betingelser.
I dette tilfellet er det bedre å kopiere og lime inn koden manuelt eller skrive den selv.
Moduler kan brukes til å holde følgende typer VBA-kode:
- uttalelse: Du kan deklarere variabler i moduler.Ved å deklarere en variabel kan du spesifisere typen data variabelen kan inneholde.Du kan kun deklarere variabler for en subrutine eller for alle subrutiner i en modul (eller alle moduler)
- subrutine (prosedyre): Dette er koden som inneholder trinnene du vil at VBA skal utføre.
- funksjonell prosess: Dette er en kode som returnerer en enkelt verdi som du kan bruke til å lage en egendefinert funksjon (også kjent som en brukerdefinert funksjon eller UDF i VBA)
Som standard er ikke moduler en del av arbeidsboken.Den må settes inn før bruk.
Legg til moduler i VB-editoren
Her er trinnene for å legge til en modul:
- Høyreklikk på et hvilket som helst objekt i arbeidsboken (der du vil at modulen skal være).
- Hold markøren over innsettingsalternativet.
- Klikk på modulen.
Dette vil umiddelbart opprette en mappe kalt Module og sette inn et objekt kalt Module1.Hvis du allerede har satt inn en modul, vil trinnene ovenfor sette inn en annen modul.
Etter å ha satt inn modulen, kan du dobbeltklikke på modulobjektet i prosjektutforskeren og det vil åpne kodevinduet for det.
Nå kan du kopiere og lime inn koden eller skrive den selv.
Fjern modulen
Her er trinnene for å slette en modul i Excel VBA:
- Høyreklikk på modulen du vil slette.
- Klikk på alternativet Fjern modul.
- Klikk Nei i dialogboksen som åpnes.
Merk: Du kan eksportere modulen før du fjerner den.Den lagres som en .bas-fil som du kan importere til andre prosjekter.For å eksportere en modul, høyreklikk modulen og klikk Eksporter fil.
Legg til kode i objektkodevinduet
For å åpne kodevinduet for et objekt, dobbeltklikker du det.
Når den åpnes, kan du skrive inn kode manuelt eller kopiere og lime inn kode fra andre moduler eller internett.
Merk at noen objekter lar deg velge hendelser som du vil skrive kode for.
Hvis du for eksempel vil skrive kode for hva som skjer når et utvalg endres i et regneark, må du først velge regnearket fra rullegardinlisten øverst til venstre i kodevinduet, og deretter velge Endre hendelse fra rullegardinliste - til høyre.
Merk: Disse hendelsene er spesifikke for objekter.Når du åpner kodevinduet for en arbeidsbok, vil du se hendelser knyttet til arbeidsbokobjektet.Når du åpner kodevinduet for et regneark, vil du se hendelser knyttet til regnearkobjektet.
Egendefinert VB-editor
Selv om standardinnstillingene til Visual Basic-editoren er gode nok for de fleste brukere, lar den deg tilpasse grensesnittet og noe funksjonalitet ytterligere.
I denne delen av opplæringen vil jeg vise deg alle alternativene dine når du tilpasser VB-editoren.
For å tilpasse VB-redigeringsmiljøet, klikk Verktøy i menylinjen og klikk deretter Alternativer.
Dette vil åpne Alternativer-dialogen, som vil gi deg alle tilpasningsalternativene i VB-editoren.Alternativer-dialogboksen har fire faner (vist nedenfor) med forskjellige tilpasningsalternativer for Visual Basic-editoren.
La oss ta en rask titt på hver fane og de viktige alternativene i hver.
editor-fanen
Mens de innebygde innstillingene fungerer bra i de fleste tilfeller, la meg fortsatt bla gjennom alternativene i denne kategorien.
Etter hvert som du blir dyktigere med VBA i Excel, vil du kanskje tilpasse VB-editoren med noen av disse alternativene.
Automatisk grammatikksjekk
Når du bruker VBA i Excel, så snart en syntaksfeil oppstår, dukker det opp en dialogboks (med en beskrivelse av feilen).Som vist under:
Hvis dette alternativet er deaktivert, vil ikke denne popup-en vises selv om det er en syntaksfeil.Imidlertid endres fargen i kodeteksten for å indikere en feil.
Hvis du er nybegynner, anbefaler jeg å aktivere dette alternativet.Etter hvert som du blir mer erfaren med koding, kan du begynne å finne disse popup-vinduene irriterende, og du kan deaktivere dette alternativet.
variabel erklæring kreves
Dette er et alternativ jeg anbefaler å aktivere.
Når du bruker VBA, bruker du variabler for å holde forskjellige datatyper og objekter.
Når du aktiverer dette alternativet, setter det automatisk inn en "Option Explicit"-setning øverst i kodevinduet.Dette tvinger deg til å deklarere alle variablene du bruker i koden.Hvis du ikke deklarerer variabelen og prøver å kjøre koden, får du en feilmelding (som vist nedenfor).
I eksemplet ovenfor brukte jeg variabelen Var, men jeg erklærte den ikke.Så når jeg prøver å kjøre koden viser den feil.
Dette alternativet er nyttig når du har mange variabler.Det hjelper meg vanligvis med å finne feilstavede variabelnavn ettersom de blir behandlet som uoppgitte og viser feil.
Merk: Når dette alternativet er aktivert, vil det ikke påvirke eksisterende moduler.
Automatiske listemedlemmer
Dette alternativet er nyttig fordi det hjelper deg å få en liste over egenskaper for en objektmetode.
For eksempel, hvis jeg vil slette et ark (ark1), må jeg bruke ark1.Slett-raden.
Når jeg skriver inn koden, så snart jeg skriver inn prikken, viser den alle metodene og egenskapene knyttet til Worksheet-objektet (vist nedenfor).
Autoliste-funksjonen er flott fordi den lar deg:
- Spar tid ved å raskt velge egenskaper og metoder fra lister
- Viser deg alle egenskapene og metodene du kanskje ikke kjenner
- Unngå stavefeil
Dette alternativet er aktivert som standard, og jeg anbefaler at du holder det slik.
Automatisk hurtiginformasjonsalternativ
Når du skriver inn en funksjon i et Excel-regneark, viser det deg noe informasjon om funksjonen – for eksempel argumentene den tar.
På samme måte, når du skriver inn en funksjon i VBA, vil den vise deg litt informasjon (vist nedenfor).Men for å gjøre dette, må du sørge for at alternativet "Automatisk hurtiginformasjon" er aktivert (som standard).
Alternativ for automatisk datatips
Når du går gjennom koden linje for linje og plasserer markøren over variabelnavnet, vil den vise verdien til variabelen.
Jeg finner det nyttig når jeg feilsøker kode eller går gjennom kode som inneholder løkker.
I eksemplet ovenfor, så snart jeg setter markøren på variabelen (var), viser den verdien den har.
Dette alternativet er aktivert som standard, og jeg anbefaler at du holder det slik.
automatisk innrykk
Siden VBA-kode kan bli detaljert og rotete, øker bruk av innrykk kodens lesbarhet.
Når du skriver kode, kan du bruke tabulatortasten for å rykke inn.
Dette alternativet sikrer at når du er ferdig med en innrykket linje og trykker Enter, starter ikke neste linje fra begynnelsen, men har samme innrykk som forrige linje.
I eksemplet ovenfor, etter at jeg har skrevet Debug.Print-linjen og trykket enter, starter den rett under den (med samme innrykknivå).
Jeg synes dette alternativet er nyttig, å slå det av betyr å manuelt rykke inn hver linje i en kodeblokk som jeg vil rykke inn.
Du kan endre innrykkverdien om ønskelig.Jeg beholder det som standard.
Dra og slipp tekstredigering
Når dette alternativet er aktivert, lar det deg velge kodeblokker og dra og slippe dem.
Det sparer tid fordi du ikke trenger å klippe og lime først.Du kan ganske enkelt velge og dra den.
Dette alternativet er aktivert som standard, og jeg anbefaler at du holder det slik.
Standard til full modulvisning
Når dette alternativet er aktivert, vil du kunne se alle prosedyrer i modulen i en rullbar liste.
Hvis dette alternativet er deaktivert, kan du bare se én modul om gangen.Du må velge modulen du ønsker å se fra nedtrekkslisten i øvre høyre hjørne av kodevinduet.
Dette alternativet er aktivert som standard, og jeg anbefaler at du holder det slik.
En grunn til at du kanskje vil deaktivere det er når du har flere store programmer og det tar tid å bla gjennom dem, eller når du har mange programmer og vil finne det raskt i stedet for å kaste bort tid mens du blar.
programseparator
Når dette alternativet er aktivert, vil du se en linje (en slags skillelinje) mellom de to prosessene.
Jeg synes dette er nyttig da det visuelt viser når en prosess avsluttes og en annen starter.
Det er aktivert som standard, og jeg anbefaler å beholde det slik.
Editor Format-fanen
Ved å bruke alternativene i editorens Format-fane kan du tilpasse utseendet til koden din i kodevinduet.
Personlig beholder jeg alle standardalternativene fordi jeg har det bra.Du kan justere den til din smak om nødvendig.
For å gjøre endringer må du først velge et alternativ i kodefargeboksen.Etter å ha valgt et alternativ, kan du endre forgrunns-, bakgrunns- og indikatorfargene.
Skrifttype og skriftstørrelse kan også angis i denne fanen.En font med fast bredde som Courier New anbefales da den gjør koden mer lesbar.
Merk at skrifttype- og størrelsesinnstillingene forblir de samme for alle kodetyper (det vil si alle kodetyper som vises i kodefargeboksen).
Nedenfor er bildet med bruddpunktene mine valgt, og jeg kan endre formatet.
Merk: Når alternativet for margindikatorlinje er aktivert, vises en liten marglinje til venstre for koden.Dette er nyttig fordi det viser nyttige beregninger mens du kjører koden.I eksemplet ovenfor, når du angir et bruddpunkt, viser det automatisk en rød prikk til venstre for linjen i marglinjen.Alternativt, for å angi et bruddpunkt, kan du ganske enkelt klikke på marglinjen til venstre for kodelinjen du vil ha bruddpunktet.
Som standard er margindikatorlinjen aktivert, og jeg anbefaler at du holder den slik.
En av elevene mine i VBA-klassen fant dette tilpassede alternativet nyttig, og hun er fargeblind.Ved å bruke alternativene her kunne hun stille inn farger og format slik at hun enkelt kunne bruke VBA.
Generelt-fanen
Kategorien Generelt har mange alternativer, men du trenger ikke å endre noen av dem.
Jeg anbefaler at du beholder alle alternativene som de er.
Et viktig alternativ å forstå i denne fanen er feilhåndtering.
Som standard er "Bruk ved ubehandlede feil" valgt, og jeg anbefaler å beholde det slik.
Dette alternativet betyr at hvis koden din støter på en feil og du ikke har håndtert den feilen i koden din, vil den bryte og stoppe.Men hvis du har løst feilen (f.eks. ved å bruke Ved feil gjenoppta neste eller Ved feil gå til alternativene), vil den ikke bryte (siden feilen ikke er uhåndtert).
Dokkingfane
I denne kategorien kan du spesifisere vinduene som skal forankres.
Dokking betyr at du kan plassere et vindu (som Project Explorer eller Properties-vinduet) slik at det ikke flyter og du kan se alle de forskjellige vinduene samtidig.
Hvis du ikke dokker, vil du kunne se ett vindu om gangen i fullskjermmodus og må bytte til et annet.
Jeg anbefaler å beholde standardinnstillingene.