Åpne Excel og VBE (Visual Basic Editor). Med mindre det er endret, inneholder VBE -vinduet Project Explorer vinduet og Egenskaper vindu (disse kan nås fra Utsikt Meny).
Prosjektutforsker: Fungerer som en filbehandling. Hjelper deg med å navigere rundt koden i arbeidsboken din.
Egenskapsvindu: Viser egenskapene til det aktive objektet (f.eks. Ark 1) i gjeldende arbeidsbok (f.eks.Bok 1).
I denne artikkelen lærer vi hvor enkelt makroopptak i Excel.
Oppgave 1: Ta opp en makro.
Denne øvelsen viser hva som skjer når en makro blir spilt inn og demonstrerer forskjellen mellom å registrere absolutte og relative referanser.
1. Velg et celle i et tomt regneark i en ny arbeidsbok C10
2. Start Makroopptaker med mulighet for å lagre makro i Denne arbeidsboken. På dette tidspunktet oppretter VBE en ny Moduler mappe. Det er ganske trygt å gå og se på det - handlingene dine blir ikke registrert. Klikk på [+] ved siden av mappen og se at VBE har plassert en modul i mappen og navngitt den Modul 1. Dobbeltklikk på modulikonet for å åpne kodevinduet. Bytt tilbake til Excel.
3. Kontroller at Relativ referanse -knappen på Stopp innspillingen verktøylinjen er IKKE trykket inn.
4. Velg celle B5 og stopp opptakeren.
5. Bytt til VBE og se på koden:
Område ("B5"). Velg
6. Spill inn en ny makro, akkurat på samme måte, men denne gangen med Relativ referanse knappen trykket inn.
7. Bytt til VBE og se på koden:
ActiveCell.Offset (-5, -1) .Range ("A1"). Velg
8. Spill inn en ny makro, men i stedet for å velge celle B5, velg en blokk med celler 3x3 som starter ved B5 (velg celler B5: F7)
9. Bytt til VBE og se på koden:
ActiveCell.Offset (-5, -1) .Range ("A1: B3"). Velg
10. Spill av makroene, etter først å ha valgt en annen celle enn C10 (for Macro2 og Macro3 må startcellen være i rad 6 eller under - se trinn 11 nedenfor)
Makro1 - flytter alltid utvalget til B5
Makro2 - flytter markeringen til en celle 5 rader opp og 1 kolonne til venstre for den valgte cellen.
Makro3 - velger alltid en blokk med seks celler som starter 5 rader opp og 1 kolonne til venstre for den valgte cellen.
11. Kjør Macro2, men tving en feil ved å velge en celle i rad 5 eller høyere. Makroen prøver å velge en ikke-eksisterende celle fordi koden forteller den å velge en celle 5 rader over startpunktet, og det er utenfor toppen av arket. trykk Feilsøk skal tas til den delen av makroen som forårsaket problemet.
MERK: Når VBE er i feilsøkingsmodus, er kodelinjen som forårsaket problemet markert med gult. Du må "tilbakestille" makroen før du kan fortsette. Klikk på Nullstille -knappen på VBE -verktøylinjen eller gå til Kjør> Tilbakestill. Den gule markeringen forsvinner og VBE kommer ut av feilsøkingsmodus.
12. Det er viktig å prøve å forutse brukerfeil som dette. Den enkleste måten er å endre koden for å ignorere feil og gå videre til neste oppgave. Gjør dette ved å legge til linjen …
Ved feil Fortsett neste
… umiddelbart over den første linjen i makroen (under linjen Sub Macro1 ()
13. Løp Makro2 som før, begynner for høyt på arket. Denne gangen forteller linjen du skrev, Excel å ignorere kodelinjen som den ikke kan utføre. Det er ingen feilmelding, og makroen avslutter etter å ha gjort alt den kan. Bruk denne metoden for å håndtere feil med forsiktighet. Dette er en veldig enkel makro. En mer kompleks makro ville sannsynligvis ikke fungert som forventet hvis feil bare ble ignorert. Brukeren aner heller ikke at noe har gått galt.
14. Endre koden til Makro2 for å inkludere en mer sofistikert feilbehandler således:
Submakro2 ()
På feil GoTo ErrorHandler
ActiveCell.Offset (-5, -1) .Range ("A1"). Velg
Avslutt Sub
ErrorHandler:
MsgBox "Du må starte under rad 5"
Slutt Sub
15. Denne gangen blir brukeren presentert med en dialogboks når noe går galt. Hvis det ikke er noen feil, får linjen Exit Sub makroen til å fullføre etter at den har gjort jobben sin - ellers ser brukeren meldingen selv om det ikke var noen feil.
Forbedre innspilte makroer
Den gode måten å lære det grunnleggende om VBA på er å spille inn en makro og se hvordan Excel skriver sin egen kode. Ofte inneholder registrerte makroer imidlertid mye mer kode enn nødvendig. Følgende øvelser viser hvordan du kan forbedre og effektivisere kode som er produsert av en innspilt makro.
Oppgave 2: Forbedring på innspilte makroer
Denne øvelsen viser at når makroer registreres, genereres det ofte mer kode enn nødvendig. Den viser bruken av With -setningen for å skrive koden på forhånd.
1. Velg en celle eller blokk med celler.
2. Start makroopptakeren og ring makroen FormatCells. Innstillingen Relative References vil ikke være relevant.
3. Gå til Format> Celler> Font og velg Times New Roman og rød.
Gå til Mønstre og velg Gul.
Gå til Justering og velg Horisontal, senter
Gå til Nummer og velg Valuta.
4. Klikk OK og stopp opptakeren.
5. Klikk på Angre knappen (eller Ctrl+Z) for å angre endringene i regnearket.
6. Velg en blokk med celler og kjør FormatCeller makro. Vær oppmerksom på at det ikke kan angres! Skriv inn cellene for å kontrollere resultatet av formateringen.
7. Se på koden:
Sub FormatSelection ()
Selection.NumberFormat = "$#, ## 0.00"
Med utvalg
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = Falsk
. Orientering = 0
.ShrinkToFit = Falsk
.MergeCells = False
Slutt med
Med utvalg. Font
.Name = "Times New Roman"
.FontStyle = "Vanlig"
.Størrelse = 10
.Strikethrough = False
.Superscript = Falsk
.Subscript = False
.OutlineFont = Falsk
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
Slutt med
Med utvalg. Interiør
.ColorIndex = 6
.Mønster = xlSolid
.PatternColorIndex = xlAutomatic
Slutt med
Slutt Sub
Endre skriften til Times New Roman
Endre skriftfargen til rød
Endre fyllfargen til Gul
Klikk på Senter knapp
Klikk på Valuta knapp
13. Se på koden. Du får fremdeles mange ting du ikke nødvendigvis vil ha. Excel registrerer alle misligholde innstillinger. De fleste av disse er trygge å slette.
14. Eksperimenter med å redigere direkte inn i koden for å endre farger, skrifttype, tallformat etc.
Oppgave 3: Se en makro som blir spilt inn
Denne øvelsen viser at du kan lære ved å se makrobyggingen mens den blir spilt inn. Det er også et eksempel på når With -setningen noen ganger ikke er passende.
1. Åpne filen VBA01.xls.
Selv om dette regnearket er visuelt OK og kan forstås av brukeren, kan tilstedeværelsen av tomme celler forårsake problemer. Prøv å filtrere dataene og se hva som skjer. Gå til Data> Filter> Autofilter og filtrer etter region eller måned. Det er klart at Excel ikke gjør de samme forutsetningene som brukeren gjør. De tomme cellene må fylles ut.
2. Tile Excel- og VBE-vinduene (vertikalt) slik at de er side om side.
3. Velg en celle i dataene. Hvis det er en tom celle, må den ligge ved siden av en celle som inneholder data.
4. Start makroopptakeren og ring makroen FillEmptyCells. Sett til rekord Relative referanser.
5. Finn og dobbeltklikk på modulen (Modul1) for den gjeldende arbeidsboken i VBE-vinduet for å åpne redigeringsruten, og slå deretter av vinduet Prosjektutforsker og vinduet Egenskaper (bare for å få plass).
6. Registrer den nye makroen slik:
Trinn 1. Ctrl+* (for å velge gjeldende region)
Steg 2. Rediger> Gå til> Spesial> Tomrom> OK (for å velge alle de tomme cellene i gjeldende region)
Trinn 3. Skriv = [Pil opp] trykk deretter på Ctrl+Enter (for å plassere skrivingen i alle de valgte cellene)
Trinn 4. Ctrl+* (for å velge gjeldende region igjen)
Trinn 5. Ctrl+C (for å kopiere utvalget - en hvilken som helst metode vil gjøre)
Trinn 6. Rediger> Lim inn spesial> Verdier> OK (for å lime inn dataene tilbake på samme sted, men kaste formlene)
Trinn 7. Esc (for å komme ut av kopimodus)
Trinn 8. Stopp innspillingen.
7. Se på koden:
Sub FillEmptyCells ()
Selection.CurrentRegion.Select
Selection.SpecialCells (xlCellTypeBlanks) .Velg
Selection.FormulaR1C1 = "= R [-1] C"
Selection.CurrentRegion.Select
Valg. Kopi
Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _
Falske, Transponer: = Falske
Application.CutCopyMode = Falsk
Slutt Sub
8. Legg merke til bruken av mellomrommet og understreket "_" for å betegne splittelsen av en enkelt linje med kode til en ny linje. Uten dette ville Excel behandlet koden som to separate utsagn.
9. Fordi denne makroen er spilt inn med gjennomtenkte kommandoer, er det lite unødvendig kode. I Lim inn spesial alt etter ordet "xlValues" kan slettes.
10. Prøv makroen. Bruk deretter AutoFilter -verktøyet og merk forskjellen.