Excel VBA-koding: Arbeide med et kodevindu

Etter hvert som du blir dyktig med Excel VBA, bruker du mye tid på å jobbe i kodevinduer. Makroer som du tar opp lagres i en modul, og du kan skrive Excel VBA-kode direkte i en VBA-modul.

Minimere og maksimere VBA-kodevinduer

Hvis du har flere prosjekter åpne, kan VBE ha mange kodevinduer til enhver tid.

Excel VBA-koding: Arbeide med et kodevindu

Overbelastning av kodevinduer er ikke et pent syn.

Kodevinduer er omtrent som arbeidsbokvinduer i Excel. Du kan minimere dem, maksimere dem, endre størrelse på dem, skjule dem, omorganisere dem og så videre. De fleste synes det er mye lettere å maksimere kodevinduet de jobber med. Hvis du gjør det, kan du se mer kode og forhindre at du blir distrahert.

For å maksimere et kodevindu, klikk på Maksimer-knappen på tittellinjen (rett ved siden av X-en). Eller bare dobbeltklikk på tittellinjen for å maksimere den. For å gjenopprette et kodevindu til sin opprinnelige størrelse, klikk på Gjenopprett-knappen. Når et vindu er maksimert, er ikke tittellinjen synlig, så du finner Gjenopprett-knappen under VBE-tittellinjen.

Noen ganger vil du kanskje ha to eller flere kodevinduer synlige. Det kan for eksempel være lurt å sammenligne koden i to moduler eller kopiere kode fra en modul til en annen. Du kan ordne vinduene manuelt eller velge Vindu → Tile horisontalt eller Vindu → Tile vertikalt for å ordne dem automatisk.

Du kan raskt bytte mellom kodevinduer ved å trykke Ctrl+F6. Hvis du gjentar den tastekombinasjonen, fortsetter du å sykle gjennom alle de åpne kodevinduene. Ved å trykke Ctrl+Shift+F6 går du gjennom vinduene i omvendt rekkefølge. (For mer informasjon, sjekk ut disse Excel VBA-tastatursnarveiene .)

Minimering av et kodevindu får det ut av veien. Du kan også klikke på vinduets Lukk-knapp (som viser X) på et kodevindus tittellinje for å lukke vinduet. (Når du lukker et vindu, skjules det bare; du vil ikke miste noe.) For å åpne det igjen, dobbeltklikker du på det aktuelle objektet i prosjektvinduet. Å jobbe med disse kodevinduene høres forresten vanskeligere ut enn det egentlig er.

Opprette en VBA-modul

Generelt kan en Excel VBA-modul inneholde tre typer kode:

  • Erklæringer: En eller flere informasjonserklæringer som du gir til VBA. Du kan for eksempel deklarere datatypen for variabler du planlegger å bruke eller angi andre modulomfattende alternativer. Erklæringer er i utgangspunktet husholdningsoppgaver. De blir faktisk ikke henrettet.
  • Underprosedyrer: Et sett med programmeringsinstruksjoner som, når de utføres, utfører en handling.
  • Funksjonsprosedyrer: Et sett med programmeringsinstruksjoner som returnerer en enkelt verdi (liknende i konseptet til en regnearkfunksjon, for eksempel SUM).

En enkelt VBA-modul kan lagre et hvilket som helst antall underprosedyrer, funksjonsprosedyrer og erklæringer. Vel, det er en grense - omtrent 64 000 tegn per modul. Det er lite sannsynlig at du i det hele tatt kommer i nærheten av å nå grensen på 64 000 tegn. Men hvis du gjorde det, er løsningen enkel: Bare sett inn en ny modul.

Hvordan du organiserer en VBA-modul er helt opp til deg. Noen mennesker foretrekker å beholde all VBA-koden for en applikasjon i en enkelt VBA-modul; andre liker å dele koden i flere moduler. Det er et personlig valg, akkurat som å arrangere møbler.

Få VBA-kode inn i en modul

En tom VBA-modul er som den falske maten du ser i vinduene på noen kinesiske restauranter; det ser bra ut, men det gjør egentlig ikke så mye for deg. Før du kan gjøre noe meningsfullt, må du ha litt VBA-kode i VBA-modulen. Du kan få VBA-kode inn i en VBA-modul på tre måter:

  • Skriv inn koden direkte.
  • Bruk Excel-makroopptakeren til å registrere handlingene dine og konvertere disse handlingene til VBA-kode.
  • Kopier koden fra en modul og lim den inn i en annen.

Skrive inn Excel VBA-kode direkte

Noen ganger er den beste ruten den mest direkte. Å skrive inn koden direkte innebærer … vel, å taste inn koden direkte. Med andre ord, du skriver inn koden ved å bruke tastaturet. Å legge inn og redigere tekst i en VBA-modul fungerer som du kanskje forventer. Du kan velge, kopiere, klippe ut, lime inn og gjøre andre ting med teksten.

Bruk Tab-tasten til å rykke inn noen av linjene for å gjøre koden lettere å lese. Innrykk er ikke nødvendig, men det er en god vane å tilegne seg. Når du studerer Excel VBA-koding, vil du forstå hvorfor innrykk av kodelinjer er nyttig.

En enkelt linje med VBA-kode kan være så lang som du trenger den. Det kan imidlertid være lurt å bruke linjefortsettelsestegnene for å dele opp lange kodelinjer. For å fortsette en enkelt linje med kode (også kjent som en setning) fra en linje til den neste, avslutter du den første linjen med et mellomrom etterfulgt av et understrek (_). Fortsett deretter utsagnet på neste linje. Og ikke glem plassen. Et understrekingstegn som ikke er innledet med et mellomrom vil ikke gjøre jobben.

Her er et eksempel på en enkelt setning delt inn i tre linjer:

Utvalg.Sorteringsnøkkel1:=Rekkevidde("A1"), _
  Order1:=xlAscending, Header:=xlGuess, _
  Orientering:=xlTopToBottom

Denne setningen ville fungere nøyaktig på samme måte hvis den ble skrevet inn på en enkelt linje (uten linjefortsettelsestegn). Legg merke til at den andre og tredje linjen i denne uttalelsen er rykket inn. Innrykk er valgfritt, men det bidrar til å klargjøre det faktum at disse linjene ikke er separate utsagn.

De hvitbelagte ingeniørene som designet VBE regnet med at folk ville gjøre feil. Derfor har VBE flere nivåer for å angre og gjøre om. Hvis du slettet et utsagn du ikke burde ha, klikker du på Angre-knappen på verktøylinjen (eller trykker på Ctrl+Z) til utsagnet dukker opp igjen. Etter at du har angret, kan du klikke på Gjenta-knappen for å utføre endringene du har angret.

Er du klar til å skrive inn en ekte kode? Prøv følgende trinn:

Opprett en ny arbeidsbok i Excel.

Trykk Alt+F11 for å aktivere VBE.

Klikk på den nye arbeidsbokens navn i prosjektvinduet.

Velg Sett inn → Modul for å sette inn en VBA-modul i prosjektet.

Skriv inn følgende kode i modulen:

Sub GuessName()
Msg = "Er navnet ditt " & Application.UserName & "?"
Ans = MsgBox(Msg, vbYesNo)
Hvis Ans = vbNei Da MsgBox "Å, bry deg ikke."
Hvis Ans = vbYes Da MsgBox "Jeg må være synsk!"
End Sub

Plasser markøren hvor som helst i teksten du skrev inn og trykk F5 for å utføre prosedyren.

F5 er en snarvei for Kjør → Kjør Sub/UserForm. Hvis du skrev inn koden riktig, utfører Excel prosedyren, og du kan svare på den enkle dialogboksen. Teksten i dialogboksen vil være forskjellig fra teksten som vises her.

Excel VBA-koding: Arbeide med et kodevindu

Gjettnavn-prosedyren viser denne dialogboksen.

Når du skriver inn koden som er oppført i trinn 5, vil du kanskje legge merke til at VBE gjør noen justeringer i teksten du skriver inn. For eksempel, etter at du har skrevet undersetningen, setter VBE automatisk inn End Sub-setningen. Og hvis du utelater mellomrommet før eller etter et likhetstegn, setter VBE inn mellomrommet for deg. VBE endrer også fargen og bruken av store bokstaver på tekst. Alt dette er helt normalt. Det er bare VBEs måte å holde ting ryddig og lesbart.

Hvis du fulgte de foregående trinnene, skrev du nettopp en VBA Sub-prosedyre, også kjent som en makro. Når du trykker F5, kjører Excel koden og følger instruksjonene. Med andre ord, Excel evaluerer hver påstand og gjør det du har bedt den om å gjøre. (Ikke la denne nyvunne kraften gå til hodet på deg.) Du kan kjøre denne makroen et hvilket som helst antall ganger – selv om den har en tendens til å miste appellen etter et par dusin ganger.

For ordens skyld bruker denne enkle Excel-makroen følgende konsepter:

  • Definere en underprosedyre (den første linjen)
  • Tilordne verdier til variabler (Msg og Ans)
  • Sammenknytte (føye sammen) en streng (ved hjelp av &-operatoren)
  • Bruke en innebygd VBA-funksjon (MsgBox)
  • Bruke innebygde VBA-konstanter (vbYesNo, vbNo og vbYes)
  • Bruke en If-Then-konstruksjon (to ganger)
  • Avslutte en underprosedyre (siste linjen)

Bruke Excel VBA makroopptaker

En annen måte du kan få kode inn i en VBA-modul er ved å registrere handlingene dine ved å bruke Excel-makroopptakeren.

Forresten, det er absolutt ingen måte du kan ta opp GuessName-prosedyren vist ovenfor. Du kan bare registrere ting du kan gjøre direkte i Excel. Å vise en meldingsboks er ikke i Excels vanlige repertoar. (Det er en VBA-ting.) Makroopptakeren er nyttig, men i mange tilfeller vil du sannsynligvis trenge å taste inn minst en del kode manuelt.

Her er et trinn-for-trinn-eksempel som viser hvordan du registrerer en makro som setter inn et nytt regneark og skjuler alle unntatt de ti første radene og alle unntatt de ti første kolonnene. Hvis du vil prøve dette eksemplet, start med en ny, tom Excel-arbeidsbok og følg disse trinnene:

Aktiver et regneark i arbeidsboken.

Ethvert Excel-regneark vil gjøre det.

Klikk på Utvikler-fanen, og sørg for at Bruk relative referanser ikke er uthevet.

Denne makroen er tatt opp med Absolute References.

Velg Utvikler → Kode → Spill inn makro, eller klikk på ikonet ved siden av Klar-indikatoren til venstre på statuslinjen.

Excel viser dialogboksen Record Macro.

I dialogboksen Spill inn makro, navngi makroen TenByTen, spesifiser at du vil ha makroen lagret i denne arbeidsboken, og trykk Shift+T for hurtigtasten.

Makroen kan utføres når du trykker Ctrl+Shift+T.

Klikk OK for å starte opptaket. Excel setter automatisk inn en ny VBA-modul i prosjektet som tilsvarer den aktive arbeidsboken.

Fra dette tidspunktet konverterer Excel handlingene dine til VBA-kode. Mens du spiller inn, blir ikonet i statuslinjen til en liten firkant. Dette er en påminnelse om at makroopptakeren kjører. Du kan også klikke på det ikonet for å stoppe makroopptakeren.

Klikk på Nytt ark-ikonet til høyre for den siste arkfanen.

Excel setter inn et nytt regneark.

Velg hele kolonne K (den 11. kolonnen) og trykk Ctrl+Shift+høyrepil; høyreklikk deretter en valgt kolonne og velg Skjul fra hurtigmenyen.

Excel skjuler alle de valgte kolonnene.

Velg hele rad 11 og trykk Ctrl+Shift+pil ned; høyreklikk deretter en valgt rad og velg Skjul fra hurtigmenyen.

Excel skjuler alle de valgte kolonnene.

Velg celle A1.

Velg Utvikler → Kode → Stopp opptak, eller klikk på Stopp opptak-knappen på statuslinjen (den lille firkanten). Excel slutter å registrere handlingene dine.

For å se denne nyinnspilte makroen, trykk Alt+F11 for å aktivere VBE. Finn arbeidsbokens navn i prosjektvinduet. Du ser at prosjektet har en ny modul oppført. Navnet på modulen avhenger av om du hadde noen andre moduler i arbeidsboken da du begynte å ta opp makroen. Hvis du ikke gjorde det, heter modulen Module1. Du kan dobbeltklikke på modulen for å se kodevinduet for modulen.

Her er koden generert av handlingene dine:

Sub TenByTen()
'
' TenByTen Makro
'
' Tastatursnarvei: Ctrl+Shift+T
'
  Sheets.Add After:=ActiveSheet
  Columns("K:K"). Velg
  Range(Selection, Selection.End(xlToRight)).Velg
  Selection.EntireColumn.Hidden = True
  Rows("11:11"). Velg
  Range(Selection, Selection.End(xlDown)).Velg
  Selection.EntireRow.Hidden = Sant
  Range("A1"). Velg
End Sub

For å prøve denne makroen, aktiver et hvilket som helst regneark og trykk på hurtigtasten du tilordnet i trinn 4: Ctrl+Shift+T.

Hvis du ikke har tilordnet en snarvei til makroen, ikke bekymre deg. Slik viser du en liste over alle tilgjengelige makroer og kjører den du ønsker:

Velg Utvikler → Kode → Makroer. Tastaturfans kan trykke Alt+F8.

Hver av disse metodene viser en dialogboks som viser alle tilgjengelige makroer.

Velg makroen i listen (i dette tilfellet TenByTen).

Klikk på Kjør-knappen.

Excel kjører makroen, og du får et nytt regneark med ti synlige rader og ti synlige kolonner.

Du kan utføre et hvilket som helst antall kommandoer og utføre et hvilket som helst antall handlinger mens makroopptakeren kjører. Excel oversetter pliktoppfyllende musehandlinger og tastetrykk til VBA-kode.

Og du kan selvfølgelig også redigere makroen etter at du har tatt den opp. For å teste de nye ferdighetene dine, prøv å redigere makroen slik at den setter inn et regneark med ni synlige rader og kolonner – perfekt for et Sudoku-puslespill.

Kopierer VBA-kode

Den siste metoden for å få kode inn i en VBA-modul er å kopiere den fra en annen modul eller fra et annet sted (for eksempel et nettsted). For eksempel kan en under- eller funksjonsprosedyre som du skriver for ett prosjekt også være nyttig i et annet prosjekt. I stedet for å kaste bort tid på å legge inn koden på nytt, kan du aktivere modulen og bruke de vanlige kopier-og-lim-prosedyrene for utklippstavlen. (Du er nok ganske glad i tastatursnarveiene Ctrl+C for å kopiere og Ctrl+V for å lime inn.) Etter å ha limt inn koden i en VBA-modul, kan du endre koden om nødvendig.

Du finner forresten mange VBA-kodeeksempler på nettet. Hvis du vil prøve dem, velger du koden i nettleseren din og trykker Ctrl+C for å kopiere den. Aktiver deretter en modul og trykk Ctrl+V for å lime den inn.

Når du kopierer kode fra et nettsted, krever det noen ganger litt fiksing. Sitattegn kan for eksempel være "smarte anførselstegn", og de må konverteres til enkle anførselstegn. Og noen ganger går lange linjer rundt. Feilaktige utsagn er lett å få øye på i VBE fordi de vises i rødt.


Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows Microsoft Word åpner filer i skrivebeskyttet modus, noe som gjør det umulig å redigere dem? Ikke bekymre deg, metodene er nedenfor

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Slik fikser du feil ved utskrift av feil Microsoft Word-dokumenter Feil ved utskrift av Word-dokumenter med endrede fonter, rotete avsnitt, manglende tekst eller tapt innhold er ganske vanlig. Men ikke gjør det

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Hvis du har brukt pennen eller merkepennen til å tegne på PowerPoint-lysbildene dine under en presentasjon, kan du lagre tegningene til neste presentasjon eller slette dem, slik at du neste gang du viser dem starter med rene PowerPoint-lysbilder. Følg disse instruksjonene for å slette penn- og merkepenntegninger: Slette linje én på […]

Style Library-innhold i SharePoint 2010

Style Library-innhold i SharePoint 2010

Stilbiblioteket inneholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og bilder som brukes av forhåndsdefinerte mastersider, sideoppsett og kontroller i SharePoint 2010. For å finne CSS-filer i stilbiblioteket til et publiseringsnettsted: Velg Site Actions→ View Alt innhold på nettstedet. Innholdet på nettstedet vises. Style-biblioteket ligger i […]

Formater tall i tusenvis og millioner i Excel-rapporter

Formater tall i tusenvis og millioner i Excel-rapporter

Ikke overveld publikum med gigantiske tall. I Microsoft Excel kan du forbedre lesbarheten til dashbordene og rapportene dine ved å formatere tallene dine slik at de vises i tusenvis eller millioner.

Hvordan dele og følge SharePoint-nettsteder

Hvordan dele og følge SharePoint-nettsteder

Lær hvordan du bruker SharePoints sosiale nettverksverktøy som lar enkeltpersoner og grupper kommunisere, samarbeide, dele og koble til.

Hvordan konvertere datoer til julianske formater i Excel

Hvordan konvertere datoer til julianske formater i Excel

Julianske datoer brukes ofte i produksjonsmiljøer som et tidsstempel og hurtigreferanse for et batchnummer. Denne typen datokoding lar forhandlere, forbrukere og serviceagenter identifisere når et produkt ble laget, og dermed alderen på produktet. Julianske datoer brukes også i programmering, militæret og astronomi. Forskjellig […]

Hvordan lage en Access Web App

Hvordan lage en Access Web App

Du kan lage en nettapp i Access 2016. Så hva er en nettapp egentlig? Vel, nettet betyr at det er online, og appen er bare en forkortelse for "applikasjon". En Custom Web App er en online databaseapplikasjon som du får tilgang til fra skyen ved hjelp av en nettleser. Du bygger og vedlikeholder nettappen i skrivebordsversjonen […]

Hurtigstartlinje i SharePoint 2010

Hurtigstartlinje i SharePoint 2010

De fleste sidene i SharePoint 2010 viser en liste over navigasjonskoblinger på hurtigstartlinjen langs venstre side av siden. Hurtigstartlinjen viser koblinger til innhold på nettstedet som lister, biblioteker, nettsteder og publiseringssider. Hurtigstartlinjen inneholder to svært viktige lenker: Linken for alt nettstedinnhold: […]

Hva betyr løserfeilmeldingene i Excel?

Hva betyr løserfeilmeldingene i Excel?

For enkle problemer finner Solver i Excel vanligvis raskt de optimale Solver-variabelverdiene for objektivfunksjonen. Men i noen tilfeller har Solver problemer med å finne Solver-variabelverdiene som optimerer objektivfunksjonen. I disse tilfellene viser Solver vanligvis en melding eller en feilmelding som beskriver eller diskuterer problemet som […]