Efterhånden som du bliver dygtig til Excel VBA, bruger du meget tid på at arbejde i kodevinduer. Makroer, som du optager, gemmes i et modul, og du kan skrive Excel VBA-kode direkte i et VBA-modul.
Minimering og maksimering af VBA-kodevinduer
Hvis du har flere projekter åbne, kan VBE'en have masser af kodevinduer på et givet tidspunkt.
Overbelastning af kodevinduer er ikke et kønt syn.
Kodevinduer minder meget om projektmappevinduer i Excel. Du kan minimere dem, maksimere dem, ændre størrelsen på dem, skjule dem, omarrangere dem og så videre. De fleste mennesker finder det meget nemmere at maksimere kodevinduet, som de arbejder på. Hvis du gør det, kan du se mere kode og forhindre dig i at blive distraheret.
For at maksimere et kodevindue skal du klikke på knappen Maksimer på dets titellinje (lige ved siden af X'et). Eller bare dobbeltklik på dens titellinje for at maksimere den. For at gendanne et kodevindue til dets oprindelige størrelse skal du klikke på knappen Gendan. Når et vindue er maksimeret, er dets titellinje ikke synlig, så du finder knappen Gendan under VBE-titellinjen.
Nogle gange vil du måske have to eller flere kodevinduer synlige. For eksempel vil du måske sammenligne koden i to moduler eller kopiere kode fra et modul til et andet. Du kan arrangere vinduerne manuelt eller vælge Vindue → Fliser vandret eller Vindue → Fliser lodret for at arrangere dem automatisk.
Du kan hurtigt skifte mellem kodevinduer ved at trykke på Ctrl+F6. Hvis du gentager denne tastekombination, fortsætter du med at cykle gennem alle de åbne kodevinduer. Ved at trykke på Ctrl+Shift+F6 går du gennem vinduerne i omvendt rækkefølge. (For mere information, tjek disse Excel VBA-tastaturgenveje .)
Minimering af et kodevindue får det af vejen. Du kan også klikke på vinduets Luk-knap (som viser X) på et kodevindues titellinje for at lukke vinduet. (Hvis du lukker et vindue, skjules det bare; du mister ikke noget.) For at åbne det igen skal du blot dobbeltklikke på det relevante objekt i projektvinduet. I øvrigt lyder det sværere at arbejde med disse kodevinduer, end det i virkeligheden er.
Oprettelse af et VBA-modul
Generelt kan et Excel VBA-modul indeholde tre typer kode:
- Erklæringer: En eller flere informationserklæringer, som du afgiver til VBA. For eksempel kan du erklære datatypen for variabler, du planlægger at bruge, eller indstille nogle andre moduldækkende muligheder. Erklæringer er som udgangspunkt husholdningserklæringer. De bliver faktisk ikke henrettet.
- Underprocedurer: Et sæt programmeringsinstruktioner, der, når de udføres, udfører en handling.
- Funktionsprocedurer: Et sæt programmeringsinstruktioner, der returnerer en enkelt værdi (svarende i konceptet til en regnearksfunktion, såsom SUM).
Et enkelt VBA-modul kan gemme et vilkårligt antal underprocedurer, funktionsprocedurer og erklæringer. Nå, der er en grænse - omkring 64.000 tegn pr. modul. Det er usandsynligt, at du overhovedet kommer tæt på at nå grænsen på 64.000 tegn. Men hvis du gjorde det, er løsningen enkel: Indsæt blot et nyt modul.
Hvordan du organiserer et VBA-modul er helt op til dig. Nogle mennesker foretrækker at beholde al deres VBA-kode for en applikation i et enkelt VBA-modul; andre kan lide at opdele koden i flere moduler. Det er et personligt valg, ligesom at arrangere møbler.
Få VBA-kode ind i et modul
Et tomt VBA-modul er som den falske mad, du ser i vinduerne på nogle kinesiske restauranter; det ser godt ud, men det gør ikke meget for dig. Før du kan gøre noget meningsfuldt, skal du have noget VBA-kode i VBA-modulet. Du kan få VBA-kode ind i et VBA-modul på tre måder:
- Indtast koden direkte.
- Brug Excel-makrooptageren til at registrere dine handlinger og konvertere disse handlinger til VBA-kode.
- Kopier koden fra et modul og indsæt den i et andet.
Indtastning af Excel VBA-kode direkte
Nogle gange er den bedste rute den mest direkte. Indtastning af kode involverer … ja, indtastning af koden direkte. Du skriver med andre ord koden ved at bruge dit tastatur. Indtastning og redigering af tekst i et VBA-modul fungerer, som du kunne forvente. Du kan vælge, kopiere, klippe, indsætte og gøre andre ting til teksten.
Brug tabulatortasten til at indrykke nogle af linjerne for at gøre din kode nemmere at læse. Indrykning er ikke nødvendig, men det er en god vane at tilegne sig. Når du studerer Excel VBA-kodning, vil du forstå, hvorfor det er nyttigt at indrykke kodelinjer.
En enkelt linje med VBA-kode kan være så lang, som du har brug for den. Du vil dog måske bruge linjefortsættelsestegnene til at opdele lange kodelinjer. For at fortsætte en enkelt kodelinje (også kendt som en sætning) fra en linje til den næste, skal du afslutte den første linje med et mellemrum efterfulgt af en understregning (_). Fortsæt derefter udsagnet på næste linje. Og glem ikke pladsen. En understregningsfigur, der ikke er indledt med et mellemrum, vil ikke klare opgaven.
Her er et eksempel på et enkelt udsagn opdelt i tre linjer:
Selection.Sort Key1:=Range("A1"), _
Order1:=xlAscending, Header:=xlGuess, _
Orientering:=xlTopToBottom
Denne erklæring ville fungere nøjagtigt på samme måde, hvis den blev indtastet på en enkelt linje (uden linjefortsættelsestegn). Bemærk, at anden og tredje linje i denne erklæring er indrykket. Indrykning er valgfrit, men det hjælper med at tydeliggøre, at disse linjer ikke er separate udsagn.
De hvidbelagte ingeniører, der designede VBE'en, forventede, at folk ville lave fejl. Derfor har VBE flere niveauer af fortryd og fortryd. Hvis du har slettet et udsagn, som du ikke burde have, skal du klikke på Fortryd-knappen på værktøjslinjen (eller trykke på Ctrl+Z), indtil udsagnet dukker op igen. Når du har fortrydet, kan du klikke på Gentag-knappen for at udføre de ændringer, du har fortrydet.
Er du klar til at indtaste en real-live-kode? Prøv følgende trin:
Opret en ny projektmappe i Excel.
Tryk på Alt+F11 for at aktivere VBE.
Klik på den nye projektmappes navn i projektvinduet.
Vælg Indsæt → Modul for at indsætte et VBA-modul i projektet.
Indtast følgende kode i modulet:
Sub Gætnavn()
Msg = "Er dit navn " & Application.UserName & "?"
Ans = MsgBox(Msg, vbYesNo)
Hvis Ans = vbNo Så MsgBox "Åh, ligeglad."
Hvis Ans = vbYes Så MsgBox "Jeg må være synsk!"
Slut Sub
Placer markøren hvor som helst i den tekst, du har indtastet, og tryk på F5 for at udføre proceduren.
F5 er en genvej til Kør → Kør Sub/UserForm. Hvis du har indtastet koden korrekt, udfører Excel proceduren, og du kan svare på den enkle dialogboks. Teksten i dialogboksen vil være forskellig fra teksten vist her.
Gætnavn-proceduren viser denne dialogboks.
Når du indtaster koden, der er angivet i trin 5, bemærker du måske, at VBE'en foretager nogle justeringer af den tekst, du indtaster. For eksempel, når du har indtastet undersætningen, indsætter VBE automatisk slutningen underudsagn. Og hvis du udelader mellemrummet før eller efter et lighedstegn, indsætter VBE mellemrummet for dig. VBE ændrer også farven og brugen af store bogstaver i noget tekst. Det hele er helt normalt. Det er bare VBE's måde at holde tingene pæne og læsbare.
Hvis du fulgte de foregående trin, skrev du bare en VBA Sub-procedure, også kendt som en makro. Når du trykker på F5, udfører Excel koden og følger instruktionerne. Med andre ord evaluerer Excel hver erklæring og gør, hvad du har bedt den om. (Lad ikke denne nyfundne kraft gå til hovedet.) Du kan udføre denne makro et vilkårligt antal gange - selvom den har en tendens til at miste sin tiltrækningskraft efter et par dusin gange.
For ordens skyld bruger denne simple Excel-makro følgende begreber:
- Definering af en underprocedure (den første linje)
- Tildeling af værdier til variabler (Msg og Ans)
- Sammenkædning (sammenføjning) af en streng (ved hjælp af &-operatoren)
- Brug af en indbygget VBA-funktion (MsgBox)
- Brug af indbyggede VBA-konstanter (vbYesNo, vbNo og vbYes)
- Brug af en If-Then-konstruktion (to gange)
- Afslutning af en underprocedure (sidste linje)
Brug af Excel VBA makrooptager
En anden måde, du kan få kode ind i et VBA-modul, er ved at registrere dine handlinger ved hjælp af Excel-makrooptageren.
Forresten, der er absolut ingen måde, du kan optage Gætnavn-proceduren vist ovenfor. Du kan kun optage ting, du kan gøre direkte i Excel. Visning af en beskedboks er ikke i Excels normale repertoire. (Det er en VBA-ting.) Makrooptageren er nyttig, men i mange tilfælde skal du sandsynligvis indtaste i det mindste noget kode manuelt.
Her er et trin-for-trin eksempel, der viser, hvordan man optager en makro, der indsætter et nyt regneark og skjuler alle undtagen de første ti rækker og alle undtagen de første ti kolonner. Hvis du vil prøve dette eksempel, skal du starte med en ny, tom Excel-projektmappe og følge disse trin:
Aktiver et regneark i projektmappen.
Ethvert Excel-regneark duer.
Klik på fanen Udvikler, og sørg for, at Brug relative referencer ikke er fremhævet.
Denne makro er optaget ved hjælp af Absolutte referencer.
Vælg Udvikler → Kode → Optag makro, eller klik på ikonet ved siden af Klar-indikatoren i venstre ende af statuslinjen.
Excel viser dialogboksen Optag makro.
Navngiv makroen TenByTen i dialogboksen Optag makro, angiv, at du vil have makroen gemt i denne projektbog, og tryk på Shift+T for genvejstasten.
Makroen kan udføres, når du trykker på Ctrl+Shift+T.
Klik på OK for at starte optagelsen. Excel indsætter automatisk et nyt VBA-modul i projektet, der svarer til den aktive projektmappe.
Fra dette tidspunkt konverterer Excel dine handlinger til VBA-kode. Mens du optager, bliver ikonet i statuslinjen til en lille firkant. Dette er en påmindelse om, at makrooptageren kører. Du kan også klikke på det ikon for at stoppe makrooptageren.
Klik på ikonet Nyt ark til højre for den sidste arkfane.
Excel indsætter et nyt regneark.
Vælg hele kolonne K (den 11. kolonne) og tryk på Ctrl+Shift+højre pil; højreklik derefter på en valgt kolonne, og vælg Skjul i genvejsmenuen.
Excel skjuler alle de valgte kolonner.
Vælg hele række 11 og tryk på Ctrl+Shift+pil ned; højreklik derefter på en hvilken som helst valgt række og vælg Skjul i genvejsmenuen.
Excel skjuler alle de valgte kolonner.
Vælg celle A1.
Vælg Udvikler → Kode → Stop optagelse, eller klik på knappen Stop optagelse på statuslinjen (den lille firkant). Excel stopper med at registrere dine handlinger.
For at se denne nyligt optagede makro skal du trykke på Alt+F11 for at aktivere VBE. Find projektmappens navn i projektvinduet. Du kan se, at projektet har et nyt modul på listen. Navnet på modulet afhænger af, om du havde andre moduler i projektmappen, da du begyndte at optage makroen. Hvis du ikke gjorde det, hedder modulet Module1. Du kan dobbeltklikke på modulet for at se kodevinduet for modulet.
Her er koden genereret af dine handlinger:
Sub TenByTen()
'
' TenByTen Makro
'
' Tastaturgenvej: Ctrl+Shift+T
'
Sheets.Add After:=ActiveSheet
Columns("K:K").Vælg
Range(Udvalg, Valg.End(xlTilHøjre)).Vælg
Selection.EntireColumn.Hidden = Sand
Rows("11:11"). Vælg
Range(Udvalg, Valg.End(xlNed)).Vælg
Selection.EntireRow.Hidden = Sand
Range("A1"). Vælg
Slut Sub
For at prøve denne makro skal du aktivere et hvilket som helst regneark og trykke på genvejstasten, som du tildelte i trin 4: Ctrl+Shift+T.
Hvis du ikke har tildelt en genvejstast til makroen, skal du ikke bekymre dig. Sådan viser du en liste over alle tilgængelige makroer og kører den, du ønsker:
Vælg Udvikler → Kode → Makroer. Tastaturfans kan trykke på Alt+F8.
En af disse metoder viser en dialogboks, der viser alle tilgængelige makroer.
Vælg makroen på listen (i dette tilfælde TenByTen).
Klik på knappen Kør.
Excel udfører makroen, og du får et nyt regneark med ti synlige rækker og ti synlige kolonner.
Du kan udføre et vilkårligt antal kommandoer og udføre et vilkårligt antal handlinger, mens makrooptageren kører. Excel oversætter pligtskyldigt dine musehandlinger og tastetryk til VBA-kode.
Og du kan selvfølgelig også redigere makroen, efter du har optaget den. For at teste dine nye færdigheder, prøv at redigere makroen, så den indsætter et regneark med ni synlige rækker og kolonner - perfekt til et Sudoku-puslespil.
Kopiering af VBA-kode
Den sidste metode til at få kode ind i et VBA-modul er at kopiere den fra et andet modul eller fra et andet sted (såsom et websted). For eksempel kan en under- eller funktionsprocedure, som du skriver for et projekt, også være nyttig i et andet projekt. I stedet for at spilde tid på at indtaste koden igen, kan du aktivere modulet og bruge de normale udklipsholder-kopier-og-indsæt-procedurer. (Du er sikkert ret glad for tastaturgenvejene Ctrl+C for at kopiere og Ctrl+V for at indsætte.) Efter at have indsat koden i et VBA-modul, kan du ændre koden, hvis det er nødvendigt.
Du finder i øvrigt masser af VBA-kodeeksempler på nettet. Hvis du gerne vil prøve dem, skal du vælge koden i din browser og trykke på Ctrl+C for at kopiere den. Aktiver derefter et modul og tryk på Ctrl+V for at indsætte det.
Når du kopierer kode fra en hjemmeside, kræver det nogle gange en vis fixering. For eksempel kan citattegn være "smarte citater", og de skal konverteres til simple citationstegn. Og nogle gange går lange linjer rundt. Fejlagtige udsagn er nemme at få øje på i VBE, fordi de vises med rødt.