Denne opplæringen viser deg hvordan du åpner og programmerer i Visual Basic Editor i VBA.
Åpne Visual Basic Editor
Det er noen få måter å få tilgang til Visual Basic Editor (VBE) i Excel.
trykk Alt + F11 på tastaturet.
ELLER
Klikk Vis> Makroer> Vis makroer. Herfra kan du Redigere en eksisterende makro eller Skape en ny en. Begge alternativene åpner VB Editor.
ELLER
Utvikler> Visual Basic
Merk: Hvis du ikke ser utviklerbåndet, må du aktivere det.
For å aktivere utviklerbåndet
Klikk på Fil fanen i båndet, og gå ned til Alternativer. I Tilpass båndet alternativer, merker du av Utvikler avmerkingsboks. Dette er slått av som standard, så du må slå den på for å se kategorien på båndet.
Klikk OK.
Fanen Utvikler vises på hovedbåndet. Klikk på Visual Basic i starten av båndet for å få tilgang til Visual Basic Editor.
Forstå VBE -skjermen
VBE -skjermen vises i grafikken nedenfor.
Prosjektutforsker
Med Project Explorer kan du se hvordan prosjektet du jobber i er organisert. Du kan se hvor mange moduler og skjemaer som er lagret i prosjektet, og kan navigere mellom disse modulene og skjemaene. En modul er hvor koden i arbeidsboken din er lagret. Når du spiller inn en makro, vil den bli lagret i en standardmodul - som som standard vil bli kalt ‘Modul 1 ’.
Hvert av regnearkene i Excel -filen din har også modulen bak, det samme gjør arbeidsboken selv. Når du setter inn et nytt ark i arbeidsboken via hovedskjermbildet i Excel, vil du se en ekstra arkmodul vises i Project Explorer.
Dobbeltklikk på en modul for å gå til koden for den modulen.
Du kan også klikke på Vindu -menyen på verktøylinjen og velge modulen der for å gå til koden for den modulen.
Type moduler
Modulene er organisert i 5 forskjellige typer.
- Standard moduler - det meste av koden din går inn i denne typen moduler. Når du spiller inn en makro, blir den satt inn i en standardmodul. Når du skriver en generell prosedyre som skal brukes gjennom arbeidsboken din, går den også normalt inn i en standardmodul.
- Arbeidsbokmoduler - denne modulen inneholder koden som er unik for den enkelte arbeidsboken. Det meste av koden i denne typen moduler er kjent som ARRANGEMENTER. En hendelse kan oppstå når en arbeidsbok for eksempel åpnes eller lukkes. Modulen kan også inneholde kode som er skrevet av deg selv og brukt av hendelsene.
- Arkmoduler - denne modulen inneholder koden som er unik for det enkelte arket. De kan oppstå når et ark klikkes på for eksempel ( Klikk på Hendelse), eller når du endrer data i en celle. Denne modulen kan også inneholde kode som er skrevet av deg selv og kalt av hendelsene.
- Form moduler - dette er modulen bak et tilpasset skjema som du kan lage. For eksempel kan du lage et skjema for å inneholde detaljer for en faktura, med en OK -knapp, inneholder koden bak knappen (klikkhendelsen) koden som vil kjøres når du klikker på knappen.
- Klassemoduler - denne modulen brukes til å lage objekter ved kjøretid. Klassemodul brukes av avanserte VBA -programmerere og vil bli dekket på et senere tidspunkt.
Sette inn en modul eller et skjema i koden din
For å sette inn en ny modul i koden din, klikk på Sett inn på menylinjen, og klikk Modul.
Eller klikk på Sett inn modul knappen som du finner på standardbåndet.
For å sette inn et nytt brukerskjema i koden, velg UserForm alternativ.
Et nytt brukerskjema vil vises i Project Explorer og vises i kodevinduet til høyre.
Du kan også sette inn et Klassemodul
En klassemodul brukes til å sette inn objekter i ditt VBA -prosjekt.
Fjerne en modul eller et skjema fra Project Explorer
Høyreklikk på modulen eller skjemaet du vil fjerne for å vise hurtigmenyen med høyreklikk.
Klikk Ta bort (i dette tilfellet UserForm1… )
ELLER
Klikk på Fil -menyen, og klikk deretter på Fjern (UserForm1).
Det vises en advarselsboks som spør om du vil eksportere skjemaet eller modulen før du fjerner det. Ved å eksportere skjemaet eller modulen kan du lagre det som en individuell fil for bruk i et annet Excel -prosjekt på et annet tidspunkt.
Oftere enn ikke når du fjerner en modul eller et skjema, er det fordi du ikke trenger den, så klikk på Nei.
Egenskaper -vinduet
Du vil se egenskapsvinduet under Project Explorer. Du må kanskje slå denne på.
trykk F4 eller klikk Utsikt, Egenskaper -vinduet.
Egenskapsvinduet lar deg se egenskapene for den aktuelle modulen eller skjemaet som er valgt i Project Explorer. Når du jobber i moduler, kan du bruke egenskapsvinduet til å endre modulens navn. Dette er den eneste eiendommen som er tilgjengelig for en modul. Imidlertid, når du arbeider med skjemaer, vil det være langt flere egenskaper tilgjengelig, og Egenskaper -vinduet blir deretter brukt i stor utstrekning for å kontrollere oppførselen til skjemaer og kontrollene i skjemaet.
Når du spiller inn en makro, blir den automatisk satt inn i en standardmodul. Modulen får navnet 'Modul 1 ’ og hvilken som helst kode som finnes i den modulen er tilgjengelig for bruk i hele prosjektet. Du bør gi nytt navn til modulen til noe som er vesentlig, som ville gjøre koden lett å finne hvis du skulle legge til flere moduler i prosjektet.
Du kan også gi nytt navn til skjemaene dine.
Hvis du har omdøpt arket i Excel, vil navnet på arket vises som navnet på arket i parentes etter Ark1.
Hvis du vil endre navnet på modulen bak arket, kan du endre det på samme måte som du endrer modulen og brukerskjemanavnet - ved å endre egenskapen Navn i vinduet Egenskaper.
Lei av å søke etter eksempler på VBA -kode? Prøv AutoMacro!
Kodevinduet
Kodevinduet viser deg delprosedyrene og funksjonene i modulene dine - det viser deg den faktiske koden. Når du spiller inn en makro, blir det opprettet en delprosedyre for deg. Hvis du legger til en snarvei i makroen, vises den som en kommentar i makroen for å fortelle deg hva snarveien er som du har tilordnet makroen.
Øverst i kodevinduet er to kombinasjonsbokser. Disse lar deg se hvilket objekt (hvis noen) i modulen du kan jobbe med, og hvilken prosedyre du kan jobbe med.
I eksemplet ovenfor jobber vi ikke med noe objekt - derfor er dette satt til generelt, men vi jobber innenfor rutene Gridlines.
Hvis vi hadde mer enn én prosedyre i denne modulen, kunne vi bruke kombinasjonsboksen ovenfor for å navigere til de andre prosedyrene.
Forstå koden
Det er to typer prosedyrer - Delprosedyrer og Funksjonsprosedyrer.
Delprosedyrer
Makroopptakeren kan bare ta opp underprosedyrer. En delprosedyre gjør ting. De utfører handlinger som å formatere en tabell eller lage en pivottabell, eller i rutenettet, og endre visningsinnstillingene for det aktive vinduet. De fleste prosedyrer som er skrevet er underprosedyrer. Alle makroer er underprosedyrer.
En delprosedyre begynner med a Under uttalelse og avsluttes med en Slutt Sub uttalelse. Prosedyrenavnet følges alltid av parenteser.
123 | Sub HideGridLines ()ActiveWindow.DisplayGridlines = FalskSlutt Sub |
Funksjonsprosedyrer
En funksjonsprosedyre returnerer en verdi. Denne verdien kan være en enkelt verdi, en matrise, et celleområde eller et objekt. Funksjoner utfører vanligvis en slags beregning. Funksjoner i Excel kan brukes med funksjonsveiviseren, eller de kan kalles fra delprosedyrer.
123 | Funksjonskilo (pund som dobbel)Kilo = (pund/2,2)Sluttfunksjon |
Denne funksjonen kan brukes i dialogboksen Sett inn funksjon i Excel for å konvertere pund til kilo.
Opprette en ny prosedyre
Før du oppretter din nye prosedyre, må du kontrollere at du er i modulen der du ønsker å lagre prosedyren. Du kan opprette en ny prosedyre ved å klikke på Sett inn -menyen, Prosedyre;
eller du kan klikke på ikonet på verktøylinjen
Følgende dialogboks vises
- Skriv inn navnet på den nye prosedyren i navnefeltet - dette må starte med en bokstav i alfabetet og kan inneholde bokstaver og tall og maksimalt være 64 tegn.
- Du kan ha en Delprosedyre, a Funksjonsprosedyre eller a Eiendom fremgangsmåte. (Egenskaper brukes i klassemoduler og angir egenskaper for ActiveX -kontroller som du kan ha opprettet).
- Du kan gjøre omfanget av prosedyren enten Offentlig eller Privat. Hvis prosedyren er offentlig (standard), kan den brukes av alle modulene i prosjektet, mens hvis prosedyren er privat, vil den bare kunne brukes av denne modulen.
- Du kan deklarere lokale variabler i denne prosedyren som statikk (dette har å gjøre med variabelenes omfang og gjør en variabel på lokalt prosedyrenivå offentlig for hele modulen). Vi vil ikke bruke dette alternativet.
Når du har fylt ut alle relevante detaljer, klikker du på OK.
Deretter skriver du inn koden mellom Sub- og End Sub -setningene.
ALTERNATIVT - du kan skrive Sub- og End Sub -setningene i modulen nøyaktig slik den vises ovenfor. Du trenger ikke å sette ordet Offentlig foran ordet sub - hvis dette ordet utelates, antas alle prosedyrer i modulen automatisk å være Public.
Deretter skriver du Under og deretter navnet på prosedyren etterfulgt av parentes.
dvs:
1 | Del test () |
De Slutt Sub uttalelsen vises automatisk.
VBA -programmering | Kodegenerator fungerer for deg!
Skrive kode som er lett å forstå og navigere
Legger til kommentarer
Gjør det til en vane å legge inn kommentarer i koden din for å minne deg selv på et senere tidspunkt om funksjonaliteten til koden.
Du kan sette inn en kommentar i koden din, men skrive en apostrof på tastaturet, eller du kan slå på redigeringsverktøylinjen og bruke kommentarknappen som vises på verktøylinjen.
Høyreklikk på verktøylinjene.
Plukke ut Redigere.
Klikk på kommentar -knappen for å sette inn en kommentar i koden din.
MERK: Du bruker vanligvis bare kommentarblokk -knappen når du har noen få kodelinjer du vil kommentere (og ikke slette). Det er lettere for en enkelt kommentar å bruke en apostrof.
Innrykk
En god vane å komme inn på er å innrykke koden slik at det er lett å lese gjennom koden og se de forskjellige delene av koden.
Det kan være mange nivåer av innrykk, avhengig av logikken i koden din.
UpperCase vs LowerCase
VBA justerer all kode til riktig bokstav, så hvis du skriver ALL IN STORE bokstaver eller alle med små bokstaver, vil den justere koden på nytt for å være i riktig bokstav!
VBA -programmering | Kodegenerator fungerer for deg!
Autofullfør
Når du justerer koden din, vil du legge merke til at VBA prøver å hjelpe deg ved å foreslå koden du kan skrive. Dette er kjent som Autofullfør.
Feil ved fangst og feilsøking
Det er 4 typer feil som kan oppstå når du skriver VBA -kode - Syntaksfeil, kompileringsfeil, kjøretidsfeil og logiske feil.
Syntaksfeil
Disse oppstår når du skriver koden feil. Dette forhindres i stor grad av VBA ved å ha alternativet Syntaks -kontroll slått på. Dette er normalt på som standard, men hvis du er slått av, slår du det på ved å gå til Verktøy, Alternativer og klikk Automatisk syntaks sjekk.
Hvis du skriver koden feil (for eksempel ekskluderer noe som skal stå i koden), vil det dukke opp en meldingsboks mens du skriver koden, og gir deg muligheten til å endre koden.
Kompileringsfeil
Disse oppstår når noe mangler i koden som forhindrer at koden kjøres. Feilen kommer ikke opp når du skriver koden, men den oppstår når du prøver å kjøre koden.
VBA -programmering | Kodegenerator fungerer for deg!
Kjøretidsfeil
Disse oppstår når du kjører koden, og syntaksen og samlingen er korrekt, men noe annet skjer for å forhindre at koden kjører riktig.
I dette tilfellet eksisterer ikke Sheet4. Denne feilmeldingen er mer nyttig enn å kompilere feilmeldinger, da den gir deg muligheten til å feilsøke koden og se hvorfor den ikke fungerer.
Klikk Feilsøk. Koden stopper ved feilen og markerer feilen med gult, slik at du kan rette feilen.
Endre ark 4 til ark 2 (ettersom ark 2 eksisterer og ark 4 ikke eksisterer).
trykk F5 eller klikk på Fortsette -knappen på verktøylinjen.
Logiske feil
Disse er de vanskeligste å finne. I deres tilfelle er koden skrevet riktig, men den faktiske logikken til koden er feil, så det er ikke sikkert at du får resultatet du vil ha fra koden. For logiske feil er feilfanging avgjørende.
Det er 2 typer feilfeller
Ved feil Gå til
Følgende kode er for å åpne dialogboksen Åpne fil - det vil gi oss en feil hvis brukeren klikker Avbryt.
Når du kjører koden, vises dialogboksen Filåpning.
Når du klikker på Avbryt, vil feilen oppstå.
Følgende feilfelle vil fortsette koden til Avslutt -funksjonen til koden og returnere meldingen.
Dette bruker On Error GoTo for å avslutte funksjonen.
Når du kjører koden og klikker på Avbryt, vises meldingsboksen.
Ved feil Fortsett neste
Hvis du setter Ved feil Fortsett neste Erklæring i koden din, linjen som inneholder feilen blir ignorert og koden vil fortsette.
For eksempel, hvis brukeren klikker Avbryt i koden nedenfor, vil koden ikke gi deg en kjøretidsfeil, den vil bare ende uten at koden gjør noe videre.
Det er tider når dette er veldig nyttig, men det kan også være veldig farlig under noen omstendigheter, ettersom det ikke returnerer en melding om hvorfor du fikk en feil.