Navngi Excel VBA-subs og funksjoner

Som mennesker, kjæledyr og orkaner, må hver Excel VBA Sub og Function-prosedyre ha et navn. Selv om det er helt akseptabelt å navngi hunden din Hairball Harris, er det vanligvis ikke en god idé å bruke en slik frihjulsholdning når du navngir Excl VBA-prosedyrer. Når du navngir Excel VBA-prosedyrer, må du følge noen få regler:

  • Du kan bruke bokstaver, tall og noen skilletegn, men det første tegnet må være en bokstav.
  • Du kan ikke bruke mellomrom eller punktum i navnet.
  • VBA skiller ikke mellom store og små bokstaver.
  • Du kan ikke bruke noen av følgende tegn i et prosedyrenavn: #, $, %, &, @, ^, * eller !. Med andre ord, prosedyrenavnet ditt kan ikke se ut som tegneserieforbannelsesord.
  • Hvis du skriver en funksjonsprosedyre for bruk i en formel, unngå å bruke et navn som ser ut som en celleadresse (for eksempel A1 eller B52). Egentlig tillater Excel slike funksjonsnavn, men hvorfor gjøre ting mer forvirrende enn de allerede er?
  • Prosedyrenavn kan ikke være lengre enn 255 tegn. (Selvfølgelig vil du aldri lage et prosedyrenavn så langt.)

Ideelt sett beskriver en prosedyres navn rutinens formål. En god praksis er å lage et navn ved å kombinere et verb og et substantiv - for eksempel ProcessData, PrintReport, Sort_Array eller CheckFilename.

Noen programmerere foretrekker å bruke setningslignende navn som gir en fullstendig beskrivelse av prosedyren. Noen eksempler inkluderer WriteReportToTextFile og Get_Print_Options_and_Print_Report. Bruken av slike lange navn har fordeler og ulemper. På den ene siden er slike navn beskrivende og vanligvis entydige. På den annen side tar de lengre tid å skrive. Alle utvikler en navnestil, men hvis makroen din ikke bare er en rask og skitten midlertidig makro, er det en god idé å være beskrivende og unngå meningsløse navn som DoIt, Update, Fix og den stadig populære Macro1.

Utføre Excel VBA Sub-prosedyrer

Selv om du kanskje ikke vet mye om å utvikle underprosedyrer på dette tidspunktet, er det viktig å vite hvordan du utfører disse prosedyrene. En underprosedyre er verdiløs med mindre du vet hvordan den skal utføres.

Forresten, å utføre en Sub-prosedyre betyr det samme som å kjøre eller kalle en Sub-prosedyre. Du kan bruke hvilken terminologi du vil.

Du kan kjøre en VBA Sub på mange måter; det er en grunn til at du kan gjøre så mange nyttige ting med Sub-prosedyrer. Her er en uttømmende liste over måter å utføre en underprosedyre på:

  • Velg Kjør → Kjør Sub/UserForm (i VBE). Excel utfører Sub-prosedyren der markøren er plassert. Denne menykommandoen har to alternativer: F5-tasten og Kjør Sub/UserForm-knappen på standardverktøylinjen i VBE. Disse metodene fungerer ikke hvis prosedyren krever ett eller flere argumenter.
  • Bruk Excels makro-dialogboks. Du åpner denne boksen ved å velge Utvikler → Kode → Makroer eller ved å velge Vis → Makroer → Makroer. Eller omgå båndet og bare trykk Alt+F8. Når Macro-dialogboksen vises, velg underprosedyren du ønsker og klikk Kjør. Denne dialogboksen viser bare prosedyrene som ikke krever et argument.
  • Trykk Ctrl+tast (eller Ctrl+Shift+tast) som er tilordnet underprosedyren (forutsatt at du har tildelt en).
  • Klikk på en knapp eller en figur på et regneark. Knappen eller formen må ha en underprosedyre tilordnet – noe som er veldig enkelt å gjøre.
  • Fra en annen Sub-prosedyre som du skriver.
  • Klikk på en knapp du har lagt til på verktøylinjen for hurtigtilgang.
  • Fra et tilpasset element du har lagt til på båndet.
  • Når en hendelse inntreffer. Disse hendelsene inkluderer å åpne arbeidsboken, lukke arbeidsboken, lagre arbeidsboken, gjøre en endring i en celle, aktivere et ark og andre ting.
  • Fra Umiddelbar-vinduet i VBE. Bare skriv inn navnet på Sub-prosedyren og trykk Enter.

Noen av disse teknikkene er dekket nedenfor. For å følge med må du legge inn en underprosedyre i en VBA-modul:

Start med en ny arbeidsbok.

Trykk Alt+F11 for å aktivere VBE.

Velg arbeidsboken i prosjektvinduet.

Velg Sett inn → Modul for å sette inn en ny modul.

Skriv inn følgende i modulen:

Sub ShowCubeRoot()
  Num = InputBox("Skriv inn et positivt tall")
  MsgBox Num ^ (1/3) & "er terningroten."
End Sub

Denne prosedyren ber brukeren om et tall og viser deretter tallets kuberot i en meldingsboks. Disse bildene viser hva som skjer når du utfører denne prosedyren.

Navngi Excel VBA-subs og funksjoner

Bruke den innebygde VBA InputBox-funksjonen for å få et tall.

Du også hva som skjer via MsgBox-funksjonen her.

Navngi Excel VBA-subs og funksjoner

Viser terningroten til et tall via MsgBox-funksjonen.

ShowCubeRoot er forresten ikke et eksempel på en god makro. Den ser ikke etter feil, så den feiler lett. Prøv å klikke på Avbryt-knappen i inntastingsboksen eller skriv inn et negativt tall. Begge handlingene resulterer i en feilmelding.

Utføre Excel VBA Sub-prosedyren direkte

En måte å utføre denne prosedyren på er å gjøre det direkte fra VBA-modulen der du definerte den. Følg disse trinnene:

Aktiver VBE, og velg VBA-modulen som inneholder prosedyren.

Flytt markøren hvor som helst i prosedyrens kode.

Trykk F5 (eller velg Kjør → Kjør Sub/UserForm).

Svar på inndataboksen, og klikk OK.

Prosedyren viser terningroten av tallet du skrev inn.

Du kan ikke bruke Kjør → Kjør Sub/UserForm for å utføre en Sub-prosedyre som bruker argumenter, fordi du ikke har noen måte å sende argumentene til prosedyren. Hvis prosedyren inneholder ett eller flere argumenter, er den eneste måten å utføre den på å kalle den fra en annen prosedyre - som må gi argumentet(e).

Utfører prosedyren fra Excels makro-dialogboks

Mesteparten av tiden utfører du underprosedyrer fra Excel, ikke fra VBE. Følgende trinn beskriver hvordan du kjører en makro ved å bruke Excels makro-dialogboks:

Hvis du jobber i VBE, aktiver Excel.
Å trykke Alt+F11 er ekspressruten.

Velg Utvikler → Kode → Makroer (eller trykk Alt+F8).
Excel viser dialogboksen vist her.Navngi Excel VBA-subs og funksjoner

Dialogboksen Makro viser alle tilgjengelige underprosedyrer.

Velg makroen.

Klikk Kjør (eller dobbeltklikk makroens navn i listeboksen).

Makro-dialogboksen viser ikke underprosedyrer som bruker argumenter. Det er fordi det ikke er noen måte for deg å spesifisere argumentene.

Utføre en Excel VBA-makro ved å bruke en hurtigtast

En annen måte å utføre en makro på er å trykke på hurtigtasten. Men før du kan bruke denne metoden, må du tilordne en snarvei til makroen.

Du har muligheten til å tilordne en snarvei i dialogboksen Spill inn makro når du begynner å spille inn en makro . Hvis du oppretter prosedyren uten å bruke makroopptakeren, kan du tilordne en hurtigtast (eller endre en eksisterende snarvei) ved å bruke følgende trinn:

Velg Utvikler → Kode → Makroer.

Velg underprosedyrenavnet fra listeboksen.

I dette eksemplet heter prosedyren ShowCubeRoot.

Klikk på Alternativer-knappen.
Excel viser dialogboksen Macro Options vist her.Navngi Excel VBA-subs og funksjoner

Dialogboksen Makroalternativer lar deg angi alternativer for makroene dine.

Klikk snarvei-alternativet og skriv inn en bokstav i boksen merket Ctrl.

Bokstaven du skriver inn tilsvarer tastekombinasjonen du vil bruke for å utføre makroen. Hvis du for eksempel skriver inn liten bokstav c, kan du utføre makroen ved å trykke Ctrl+C. Hvis du skriver inn en stor bokstav, må du legge til Shift-tasten i tastekombinasjonen. Hvis du for eksempel skriver inn C, kan du kjøre makroen ved å trykke Ctrl+Shift+C.

Klikk OK for å lukke dialogboksen Macro Options og klikk deretter Cancel for å lukke Macro-dialogboksen.
Etter at du har tilordnet en hurtigtast, kan du trykke på den tastekombinasjonen for å utføre makroen. En snarveistast fungerer ikke hvis den er tilordnet en makro som bruker et argument.

Hurtigtastene du tilordner til makroer overstyrer Excels innebygde hurtigtaster. For eksempel er Ctrl+C standard hurtigtast for å kopiere data. Hvis du tilordner Ctrl+C til en makro, kan du ikke bruke Ctrl+C til å kopiere. Dette er vanligvis ikke en stor sak fordi Excel nesten alltid gir andre måter å utføre kommandoer på.

Utføre Excel VBA-prosedyren fra en knapp eller form

Noen ganger vil du kanskje like ideen om å tilordne makroen til en knapp (eller en annen form) på et regneark. Følg disse trinnene for å tilordne Excel-makroen til en knapp:

Aktiver et regneark.

Legg til en knapp fra Form Controls-gruppen.
For å vise gruppen Skjemakontroller, velg Utvikler → Kontroller → Sett inn.Navngi Excel VBA-subs og funksjoner

Båndet, som viser kontrollene som er tilgjengelige når du klikker Sett inn på Utvikler-fanen.

Klikk på knappeverktøyet i gruppen Skjemakontroller.

Det er den første knappen i den første raden med kontroller.

Dra i regnearket for å lage knappen.
Etter at du har lagt til knappen i regnearket, leser Excel tankene dine og viser dialogboksen Tildel makro vist nedenfor.Navngi Excel VBA-subs og funksjoner

Når du legger til en knapp i et regneark, viser Excel automatisk dialogboksen Tildel makro.

Velg makroen du vil tilordne til knappen.

Klikk OK.

Etter at du har gjort oppgaven, vil makroen utføres ved å klikke på knappen - akkurat som magi.

Når du legger til en knapp, merk at rullegardinboksen viser to sett med kontroller: Skjemakontroller og ActiveX-kontroller. Disse to gruppene med kontroller ser like ut, men de er faktisk veldig forskjellige. I praksis er skjemakontrollene enklere å bruke.

Du kan også tilordne en makro til en hvilken som helst annen form eller objekt. Anta for eksempel at du vil kjøre en makro når brukeren klikker på et rektangelobjekt. Følg disse trinnene:

Legg til rektangelet i regnearket.

Sett inn et rektangel ved å velge Sett inn → Illustrasjoner → Former.

Høyreklikk på rektangelet.

Velg Tilordne makro fra snarveimenyen.

Velg makroen i dialogboksen Tildel makro.

Klikk OK.
Etter at du har utført disse trinnene, utføres den tilordnede makroen ved å klikke på rektangelet.

Utføre prosedyren fra en annen Excel VBA-prosedyre

Du kan også utføre en Excel VBA-prosedyre fra en annen prosedyre. Følg disse trinnene hvis du vil prøve dette:

Aktiver VBA-modulen som inneholder ShowCubeRoot-rutinen.

Skriv inn denne nye prosedyren (enten over eller under ShowCubeRoot-koden - det spiller ingen rolle):

Sub NewSub()
  Ring ShowCubeRoot
End Sub

Når du er ferdig, kjører du bare NewSub-makroen.

Den enkleste måten å gjøre dette på er å flytte markøren hvor som helst innenfor NewSub-koden og trykke F5. Legg merke til at denne NewSub-prosedyren bare utfører ShowCubeRoot-prosedyren.

Forresten, søkeordet Call er valgfritt. Utsagnet kan kun bestå av Sub-prosedyrens navn. Bruk av nøkkelordet Call gjør det imidlertid helt klart at en prosedyre kalles.

Utføre Excel VBA-funksjonsprosedyrer

Funksjoner, i motsetning til underprosedyrer, kan utføres på bare to måter:

  • Ved å kalle opp funksjonen fra en annen underprosedyre eller funksjonsprosedyre
  • Ved å bruke funksjonen i en regnearkformel

Prøv denne enkle funksjonen. Skriv det inn i en VBA-modul:

Funksjon CubeRoot(nummer)
  CubeRoot = tall ^ (1 / 3)
Avslutt funksjon

Denne funksjonen er ganske kjip; den beregner bare terningroten av tallet som ble sendt til den som argument. Det gir imidlertid et utgangspunkt for å forstå funksjoner. Den illustrerer også et viktig konsept om funksjoner: hvordan returnere verdien. (Du husker at en funksjon returnerer en verdi, ikke sant?)

Legg merke til at den enkle kodelinjen som utgjør denne funksjonsprosedyren, utfører en beregning. Resultatet av regnestykket (tall i potensen 1⁄3) tilordnes variabelen CubeRoot. Ikke tilfeldig er CubeRoot også navnet på funksjonen. For å fortelle funksjonen hvilken verdi som skal returneres, tildeler du denne verdien til navnet på funksjonen.

Kalle opp Excel VBA-funksjonen fra en underprosedyre

Fordi du ikke kan utføre en funksjon direkte, må du kalle den fra en annen prosedyre. Skriv inn følgende enkle prosedyre i samme VBA-modul som inneholder CubeRoot-funksjonen:

Sub CallerSub()
  Ans = CubeRoot(125)
  MsgBox Ans
End Sub

Når du utfører CallerSub-prosedyren, viser Excel en meldingsboks som inneholder verdien til Ans-variabelen, som er 5.

Her er hva som skjer: CubeRoot-funksjonen utføres, og den mottar et argument på 125. Beregningen utføres av funksjonens kode (ved å bruke verdien som sendes som argument), og funksjonens returnerte verdi tilordnes Ans-variabelen. MsgBox-funksjonen viser deretter verdien til Ans-variabelen.

Prøv å endre argumentet som er sendt til CubeRoot-funksjonen og kjør CallerSub-makroen på nytt. Det fungerer akkurat som det skal - forutsatt at du gir funksjonen et gyldig argument (et positivt tall).

CallerSub-prosedyren kan forresten forenkles litt. Ans-variabelen er egentlig ikke nødvendig med mindre koden din vil bruke den variabelen senere. Du kan bruke denne enkle setningen for å oppnå samme resultat:

MsgBox CubeRoot(125)

Kalle en Excel VBA-funksjon fra en regnearkformel

Nå er det på tide å kalle denne VBA-funksjonsprosedyren fra en regnearkformel. Aktiver et regneark i den samme arbeidsboken som inneholder CubeRoot-funksjonsdefinisjonen. Skriv deretter inn følgende formel i en hvilken som helst celle:

=CubeRoot(1728)

Cellen viser 12, som faktisk er kuberoten av 1728.

Som du kanskje forventer, kan du bruke en cellereferanse som argument for CubeRoot-funksjonen. For eksempel, hvis celle A1 inneholder en verdi, kan du skrive inn =CubeRoot(A1) . I dette tilfellet returnerer funksjonen tallet oppnådd ved å beregne terningsroten av verdien i A1.

Du kan bruke denne funksjonen et hvilket som helst antall ganger i regnearket. I likhet med Excels innebygde funksjoner, vises dine egendefinerte funksjoner i dialogboksen Sett inn funksjon. Klikk på verktøylinjeknappen Sett inn funksjon, og velg kategorien Brukerdefinert. Som vist nedenfor viser dialogboksen Insert Function en liste over din egen funksjon.

Navngi Excel VBA-subs og funksjoner

CubeRoot-funksjonen vises i kategorien Brukerdefinert i dialogboksen Insert Function.

Hvis du vil at dialogboksen Sett inn funksjon skal vise en beskrivelse av funksjonen, følger du disse trinnene:

Velg Utvikler → Kode → Makroer.
Excel viser makrodialogboksen, men CubeRoot vises ikke i listen. (CubeRoot er en funksjonsprosedyre, og denne listen viser bare underprosedyrer.) Ikke bekymre deg.

Skriv inn ordet CubeRoot i Makronavn-boksen.

Klikk på Alternativer-knappen.

Skriv inn en beskrivelse av funksjonen i boksen Beskrivelse.

Klikk OK for å lukke dialogboksen Makroalternativer.

Lukk makrodialogboksen ved å klikke på Avbryt-knappen.
Denne beskrivende teksten vises nå i dialogboksen Sett inn funksjon.

Dette bildet viser CubeRoot-funksjonen som brukes i regnearkformler.

Navngi Excel VBA-subs og funksjoner

Bruke CubeRoot-funksjonen i formler.

Nå kan det hende ting begynner å gå sammen for deg.


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 […]