Navngivning af Excel VBA-underordnede og -funktioner

Ligesom mennesker, kæledyr og orkaner skal hver Excel VBA-under- og funktionsprocedure have et navn. Selvom det er helt acceptabelt at navngive din hund Hairball Harris, er det normalt ikke en god idé at bruge sådan en frihjuls-attitude, når du navngiver Excl VBA-procedurer. Når du navngiver Excel VBA-procedurer, skal du følge nogle få regler:

  • Du kan bruge bogstaver, tal og nogle tegnsætningstegn, men det første tegn skal være et bogstav.
  • Du kan ikke bruge mellemrum eller punktum i navnet.
  • VBA skelner ikke mellem store og små bogstaver.
  • Du kan ikke bruge nogen af ​​følgende tegn i et procedurenavn: #, $, %, &, @, ^, * eller !. Med andre ord kan dit procedurenavn ikke ligne tegneserieforbandelsesord.
  • Hvis du skriver en funktionsprocedure til brug i en formel, skal du undgå at bruge et navn, der ligner en celleadresse (f.eks. A1 eller B52). Faktisk tillader Excel sådanne funktionsnavne, men hvorfor gøre tingene mere forvirrende, end de allerede er?
  • Procedurenavne må ikke være længere end 255 tegn. (Selvfølgelig ville du aldrig lave et procedurenavn så langt.)

Ideelt set beskriver en procedures navn rutinens formål. En god praksis er at oprette et navn ved at kombinere et verbum og et substantiv - for eksempel ProcessData, PrintReport, Sort_Array eller CheckFilename.

Nogle programmører foretrækker at bruge sætningslignende navne, der giver en komplet beskrivelse af proceduren. Nogle eksempler inkluderer WriteReportToTextFile og Get_Print_Options_and_Print_Report. Brugen af ​​så lange navne har fordele og ulemper. På den ene side er sådanne navne beskrivende og normalt utvetydige. På den anden side tager de længere tid at skrive. Alle udvikler en navngivningsstil, men hvis din makro ikke bare er en hurtig og beskidt midlertidig makro, er det en god idé at være beskrivende og undgå meningsløse navne som DoIt, Update, Fix og den altid populære Macro1.

Udførelse af Excel VBA-underprocedurer

Selvom du måske ikke ved meget om udvikling af underprocedurer på dette tidspunkt, er det vigtigt at vide, hvordan disse procedurer udføres. En underprocedure er værdiløs, medmindre du ved, hvordan den skal udføres.

Forresten, at udføre en Sub-procedure betyder det samme som at køre eller kalde en Sub-procedure. Du kan bruge den terminologi du vil.

Du kan udføre en VBA Sub på mange måder; det er en af ​​grundene til, at du kan gøre så mange nyttige ting med underprocedurer. Her er en udtømmende liste over måder at udføre en underprocedure på:

  • Vælg Kør → Kør Sub/UserForm (i VBE). Excel udfører den underprocedure, hvor markøren er placeret. Denne menukommando har to alternativer: F5-tasten og Kør Sub/UserForm-knappen på standardværktøjslinjen i VBE. Disse metoder virker ikke, hvis proceduren kræver et eller flere argumenter.
  • Brug Excels makro-dialogboks. Du åbner denne boks ved at vælge Udvikler → Kode → Makroer eller ved at vælge Vis → Makroer → Makroer. Eller omgå båndet og tryk bare på Alt+F8. Når makrodialogboksen vises, skal du vælge den ønskede underprocedure og klikke på Kør. Denne dialogboks viser kun de procedurer, der ikke kræver et argument.
  • Tryk på Ctrl+tast (eller Ctrl+Shift+tast), der er tildelt underproceduren (forudsat at du har tildelt en).
  • Klik på en knap eller en figur på et regneark. Knappen eller formen skal have en underprocedure tildelt sig - hvilket er meget nemt at gøre.
  • Fra en anden underprocedure, som du skriver.
  • Klik på en knap, som du har tilføjet til værktøjslinjen Hurtig adgang.
  • Fra et brugerdefineret element, du har føjet til båndet.
  • Når en begivenhed indtræffer. Disse hændelser omfatter åbning af projektmappen, lukning af projektmappen, lagring af projektmappen, ændring af en celle, aktivering af et ark og andre ting.
  • Fra vinduet Øjeblikkelig i VBE. Indtast blot navnet på underproceduren og tryk på Enter.

Nogle af disse teknikker er dækket nedenfor. For at følge med skal du indtaste en underprocedure i et VBA-modul:

Start med en ny projektmappe.

Tryk på Alt+F11 for at aktivere VBE.

Vælg projektmappen i projektvinduet.

Vælg Indsæt → Modul for at indsætte et nyt modul.

Indtast følgende i modulet:

Sub ShowCubeRoot()
  Num = InputBox("Indtast et positivt tal")
  MsgBox Num ^ (1/3) & "er terningroden."
Slut Sub

Denne procedure beder brugeren om et tal og viser derefter dette nummers terningerod i en meddelelsesboks. Disse billeder viser, hvad der sker, når du udfører denne procedure.

Navngivning af Excel VBA-underordnede og -funktioner

Brug af den indbyggede VBA InputBox-funktion til at få et nummer.

Du også hvad der sker via MsgBox-funktionen her.

Navngivning af Excel VBA-underordnede og -funktioner

Visning af terningroden af ​​et tal via MsgBox-funktionen.

ShowCubeRoot er i øvrigt ikke et eksempel på en god makro. Den tjekker ikke for fejl, så den fejler let. Prøv at klikke på knappen Annuller i indtastningsfeltet eller indtast et negativt tal. Begge handlinger resulterer i en fejlmeddelelse.

Udførelse af Excel VBA Sub-proceduren direkte

En måde at udføre denne procedure på er ved at gøre det direkte fra VBA-modulet, hvor du definerede det. Følg disse trin:

Aktiver VBE, og vælg VBA-modulet, der indeholder proceduren.

Flyt markøren hvor som helst i procedurens kode.

Tryk på F5 (eller vælg Kør → Kør Sub/UserForm).

Svar på inputfeltet, og klik på OK.

Fremgangsmåden viser terningroden af ​​det tal, du indtastede.

Du kan ikke bruge Kør → Kør Sub/UserForm til at udføre en Underprocedure, der bruger argumenter, fordi du ikke har nogen måde at videregive argumenterne til proceduren. Hvis proceduren indeholder et eller flere argumenter, er den eneste måde at udføre den på at kalde den fra en anden procedure - som skal levere argumentet/argumenterne.

Udførelse af proceduren fra Excels makro-dialogboks

Det meste af tiden udfører du underprocedurer fra Excel, ikke fra VBE. Følgende trin beskriver, hvordan man udfører en makro ved at bruge Excels makro-dialogboks:

Hvis du arbejder i VBE, skal du aktivere Excel.
Et tryk på Alt+F11 er ekspresruten.

Vælg Udvikler → Kode → Makroer (eller tryk på Alt+F8).
Excel viser dialogboksen vist her.Navngivning af Excel VBA-underordnede og -funktioner

Dialogboksen Makro viser alle tilgængelige underprocedurer.

Vælg makroen.

Klik på Kør (eller dobbeltklik på makroens navn i listeboksen).

Dialogboksen Makro viser ikke underprocedurer, der bruger argumenter. Det er fordi der ikke er nogen måde for dig at specificere argumenterne.

Udførelse af en Excel VBA-makro ved at bruge en genvejstast

En anden måde at udføre en makro på er at trykke på dens genvejstast. Men før du kan bruge denne metode, skal du tildele en genvejstast til makroen.

Du har mulighed for at tildele en genvejstast i dialogboksen Optag makro, når du begynder at optage en makro . Hvis du opretter proceduren uden at bruge makrooptageren, kan du tildele en genvejstast (eller ændre en eksisterende genvejstast) ved at bruge følgende trin:

Vælg Udvikler → Kode → Makroer.

Vælg underprocedurenavnet fra listeboksen.

I dette eksempel hedder proceduren ShowCubeRoot.

Klik på knappen Indstillinger.
Excel viser dialogboksen Makroindstillinger vist her.Navngivning af Excel VBA-underordnede og -funktioner

Dialogboksen Makroindstillinger giver dig mulighed for at angive indstillinger for dine makroer.

Klik på genvejstasten, og indtast et bogstav i boksen mærket Ctrl.

Det bogstav, du indtaster, svarer til den tastekombination, du vil bruge til at udføre makroen. Hvis du f.eks. indtaster det lille bogstav c, kan du udføre makroen ved at trykke på Ctrl+C. Hvis du indtaster et stort bogstav, skal du tilføje Shift-tasten til tastekombinationen. Hvis du for eksempel indtaster C, kan du udføre makroen ved at trykke på Ctrl+Shift+C.

Klik på OK for at lukke dialogboksen Makroindstillinger, og klik derefter på Annuller for at lukke dialogboksen Makro.
Når du har tildelt en genvejstast, kan du trykke på denne tastekombination for at udføre makroen. En genvejstast virker ikke, hvis den er tildelt en makro, der bruger et argument.

De genvejstaster, du tildeler til makroer, tilsidesætter Excels indbyggede genvejstaster. For eksempel er Ctrl+C standardgenvejstasten til at kopiere data. Hvis du tildeler Ctrl+C til en makro, kan du ikke bruge Ctrl+C til at kopiere. Dette er normalt ikke en stor sag, fordi Excel næsten altid giver andre måder at udføre kommandoer på.

Udførelse af Excel VBA-proceduren fra en knap eller form

Nogle gange kan du måske lide ideen om at tildele makroen til en knap (eller enhver anden form) på et regneark. Følg disse trin for at tildele Excel-makroen til en knap:

Aktiver et regneark.

Tilføj en knap fra gruppen Formularkontrolelementer.
For at vise gruppen Formularkontrolelementer skal du vælge Udvikler → Kontrolelementer → Indsæt.Navngivning af Excel VBA-underordnede og -funktioner

Båndet, der viser de tilgængelige kontroller, når du klikker på Indsæt på fanen Udvikler.

Klik på knapværktøjet i gruppen Formularkontrolelementer.

Det er den første knap i den første række af kontroller.

Træk i regnearket for at oprette knappen.
Når du har tilføjet knappen til dit regneark, læser Excel dine tanker og viser dialogboksen Tildel makro vist nedenfor.Navngivning af Excel VBA-underordnede og -funktioner

Når du tilføjer en knap til et regneark, viser Excel automatisk dialogboksen Tildel makro.

Vælg den makro, du vil tildele knappen.

Klik på OK.

Når du har lavet opgaven, udføres makroen ved at klikke på knappen - ligesom magi.

Når du tilføjer en knap, skal du bemærke, at rullemenuen viser to sæt kontrolelementer: Formularkontrolelementer og ActiveX-kontroller. Disse to grupper af kontroller ligner hinanden, men de er faktisk meget forskellige. I praksis er formularkontrollerne nemmere at bruge.

Du kan også tildele en makro til enhver anden form eller objekt. Antag for eksempel, at du gerne vil udføre en makro, når brugeren klikker på et rektangelobjekt. Følg disse trin:

Tilføj rektanglet til arbejdsarket.

Indsæt et rektangel ved at vælge Indsæt → Illustrationer → Former.

Højreklik på rektanglet.

Vælg Tildel makro fra dens genvejsmenu.

Vælg makroen i dialogboksen Tildel makro.

Klik på OK.
Når du har udført disse trin, udføres den tildelte makro ved at klikke på rektanglet.

Udførelse af proceduren fra en anden Excel VBA-procedure

Du kan også udføre en Excel VBA-procedure fra en anden procedure. Følg disse trin, hvis du vil prøve dette:

Aktiver VBA-modulet, der indeholder ShowCubeRoot-rutinen.

Indtast denne nye procedure (enten over eller under ShowCubeRoot-koden - det gør ingen forskel):

Sub NewSub()
  Ring til ShowCubeRoot
Slut Sub

Når du er færdig, udfører du blot NewSub-makroen.

Den nemmeste måde at gøre dette på er at flytte markøren et vilkårligt sted i NewSub-koden og trykke på F5. Bemærk, at denne NewSub-procedure blot udfører ShowCubeRoot-proceduren.

Nøgleordet Call er i øvrigt valgfrit. Redegørelsen kan kun bestå af underprocedurens navn. Brug af nøgleordet Call gør det dog helt klart, at en procedure kaldes.

Udførelse af Excel VBA-funktionsprocedurer

Funktioner, i modsætning til underprocedurer, kan kun udføres på to måder:

  • Ved at kalde funktionen fra en anden underprocedure eller funktionsprocedure
  • Ved at bruge funktionen i en regnearksformel

Prøv denne simple funktion. Indtast det i et VBA-modul:

Funktion CubeRoot (nummer)
  CubeRoot = tal ^ (1/3)
Afslut funktion

This function is pretty wimpy; it merely calculates the cube root of the number passed to it as its argument. It does, however, provide a starting point for understanding functions. It also illustrates an important concept about functions: how to return the value. (You do remember that a function returns a value, right?)

Notice that the single line of code that makes up this Function procedure performs a calculation. The result of the math (number to the power of 1⁄3) is assigned to the variable CubeRoot. Not coincidentally, CubeRoot is also the name of the function. To tell the function what value to return, you assign that value to the name of the function.

Calling the Excel VBA function from a Sub procedure

Because you can’t execute a function directly, you must call it from another procedure. Enter the following simple procedure in the same VBA module that contains the CubeRoot function:

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

When you execute the CallerSub procedure, Excel displays a message box that contains the value of the Ans variable, which is 5.

Here’s what’s going on: The CubeRoot function is executed, and it receives an argument of 125. The calculation is performed by the function’s code (using the value passed as an argument), and the function’s returned value is assigned to the Ans variable. The MsgBox function then displays the value of the Ans variable.

Try changing the argument that’s passed to the CubeRoot function and run the CallerSub macro again. It works just like it should — assuming that you give the function a valid argument (a positive number).

By the way, the CallerSub procedure could be simplified a bit. The Ans variable is not really required unless your code will use that variable later. You could use this single statement to obtain the same result:

MsgBox CubeRoot(125)

Calling an Excel VBA function from a worksheet formula

Now it’s time to call this VBA Function procedure from a worksheet formula. Activate a worksheet in the same workbook that holds the CubeRoot function definition. Then enter the following formula in any cell:

=CubeRoot(1728)

The cell displays 12, which is indeed the cube root of 1,728.

As you might expect, you can use a cell reference as the argument for the CubeRoot function. For example, if cell A1 contains a value, you can enter =CubeRoot(A1). In this case, the function returns the number obtained by calculating the cube root of the value in A1.

You can use this function any number of times in the worksheet. Like Excel’s built-in functions, your custom functions appear in the Insert Function dialog box. Click the Insert Function toolbar button, and choose the User Defined category. As shown below, the Insert Function dialog box lists your very own function.

Navngivning af Excel VBA-underordnede og -funktioner

The CubeRoot function appears in the User Defined category of the Insert Function dialog box.

If you want the Insert Function dialog box to display a description of the function, follow these steps:

Choose Developer → Code →  Macros.
Excel displays the Macro dialog box, but CubeRoot doesn’t appear in the list. (CubeRoot is a Function procedure, and this list shows only Sub procedures.) Don’t fret.

Type the word CubeRoot in the Macro Name box.

Click the Options button.

Enter a description of the function in the Description box.

Click OK to close the Macro Options dialog box.

Close the Macro dialog box by clicking the Cancel button.
This descriptive text now appears in the Insert Function dialog box.

This image shows the CubeRoot function being used in worksheet formulas.

Navngivning af Excel VBA-underordnede og -funktioner

Using the CubeRoot function in formulas.

By now, things may be starting to come together for you.


Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows

Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows

Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows Microsoft Word åbner filer i skrivebeskyttet tilstand, hvilket gør det umuligt at redigere det? Bare rolig, metoderne er nedenfor

Sådan rettes forkert udskrivning af Microsoft Word-dokumenter

Sådan rettes forkert udskrivning af Microsoft Word-dokumenter

Sådan rettes fejl ved udskrivning af forkerte Microsoft Word-dokumenter Fejl ved udskrivning af Word-dokumenter med ændrede skrifttyper, rodede afsnit, manglende tekst eller tabt indhold er ret almindelige. Men lad være

Slet pen- og highlighter-tegninger på dine PowerPoint-dias

Slet pen- og highlighter-tegninger på dine PowerPoint-dias

Hvis du har brugt pennen eller highlighteren til at tegne på dine PowerPoint-dias under en præsentation, kan du gemme tegningerne til næste præsentation eller slette dem, så næste gang du viser den, starter du med rene PowerPoint-dias. Følg disse instruktioner for at slette pen- og highlighter-tegninger: Sletning af linjer en ved […]

Indhold af stilbibliotek i SharePoint 2010

Indhold af stilbibliotek i SharePoint 2010

Style-biblioteket indeholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og billeder, der bruges af foruddefinerede mastersider, sidelayouts og kontrolelementer i SharePoint 2010. For at finde CSS-filer i Style-biblioteket på et udgivelsessted: Vælg Site Actions→ View Alt webstedsindhold. Indholdet af webstedet vises. Style-biblioteket ligger i […]

Formater tal i tusinder og millioner i Excel-rapporter

Formater tal i tusinder og millioner i Excel-rapporter

Overvæld ikke dit publikum med gigantiske tal. I Microsoft Excel kan du forbedre læsbarheden af ​​dine dashboards og rapporter ved at formatere dine tal, så de vises i tusinder eller millioner.

Sådan deler og følger du SharePoint-websteder

Sådan deler og følger du SharePoint-websteder

Lær, hvordan du bruger SharePoints sociale netværksværktøjer, der lader enkeltpersoner og grupper kommunikere, samarbejde, dele og forbinde.

Sådan konverteres datoer til julianske formater i Excel

Sådan konverteres datoer til julianske formater i Excel

Julianske datoer bruges ofte i produktionsmiljøer som et tidsstempel og hurtig reference for et batchnummer. Denne type datokodning giver detailhandlere, forbrugere og serviceagenter mulighed for at identificere, hvornår et produkt blev fremstillet, og dermed produktets alder. Julianske datoer bruges også i programmering, militæret og astronomi. Forskellige […]

Sådan opretter du en Access Web App

Sådan opretter du en Access Web App

Du kan oprette en webapp i Access 2016. Så hvad er en webapp overhovedet? Nå, web betyder, at det er online, og app er kun en forkortelse for "applikation". En Custom Web App er en online databaseapplikation, der tilgås fra skyen ved hjælp af en browser. Du bygger og vedligeholder webappen i desktopversionen […]

Hurtig startlinje i SharePoint 2010

Hurtig startlinje i SharePoint 2010

De fleste sider i SharePoint 2010 viser en liste over navigationslinks på linjen Hurtig start langs venstre side af siden. Hurtig startlinjen viser links til fremhævet webstedsindhold såsom lister, biblioteker, websteder og udgivelsessider. Hurtigstartlinjen indeholder to meget vigtige links: Linket Alt webstedsindhold: […]

Hvad betyder Solver-fejlmeddelelserne i Excel?

Hvad betyder Solver-fejlmeddelelserne i Excel?

Ved simple problemer finder Solver i Excel som regel hurtigt de optimale Solver-variableværdier for objektivfunktionen. Men i nogle tilfælde har Solver problemer med at finde de Solver-variableværdier, der optimerer objektivfunktionen. I disse tilfælde viser Solver typisk en meddelelse eller en fejlmeddelelse, der beskriver eller diskuterer det problem, der […]