Namnge Excel VBA-subs och funktioner

Liksom människor, husdjur och orkaner måste varje Excel VBA-under- och funktionsprocedur ha ett namn. Även om det är helt acceptabelt att döpa din hund till Hairball Harris, är det vanligtvis inte en bra idé att använda en sådan frigående attityd när du namnger Excl VBA-procedurer. När du namnger Excel VBA-procedurer måste du följa några regler:

  • Du kan använda bokstäver, siffror och vissa skiljetecken, men det första tecknet måste vara en bokstav.
  • Du kan inte använda mellanslag eller punkter i namnet.
  • VBA skiljer inte mellan stora och små bokstäver.
  • Du kan inte använda något av följande tecken i ett procedurnamn: #, $, %, &, @, ^, * eller !. Med andra ord kan ditt procedurnamn inte se ut som serieförbannelser.
  • Om du skriver en funktionsprocedur för användning i en formel, undvik att använda ett namn som ser ut som en celladress (till exempel A1 eller B52). Egentligen tillåter Excel sådana funktionsnamn, men varför göra saker mer förvirrande än de redan är?
  • Procedurnamn får inte vara längre än 255 tecken. (Naturligtvis skulle du aldrig göra ett procedurnamn så långt.)

Helst beskriver en procedurs namn rutinens syfte. En bra praxis är att skapa ett namn genom att kombinera ett verb och ett substantiv — till exempel ProcessData, PrintReport, Sort_Array eller CheckFilename.

Vissa programmerare föredrar att använda meningsliknande namn som ger en fullständig beskrivning av proceduren. Några exempel inkluderar WriteReportToTextFile och Get_Print_Options_and_Print_Report. Användningen av så långa namn har för- och nackdelar. Å ena sidan är sådana namn beskrivande och vanligtvis entydiga. Å andra sidan tar de längre tid att skriva. Alla utvecklar en namngivningsstil, men om ditt makro inte bara är ett snabbt och smutsigt tillfälligt makro, är det en bra idé att vara beskrivande och undvika meningslösa namn som DoIt, Update, Fix och den ständigt populära Macro1.

Exekvera Excel VBA Sub-procedurer

Även om du kanske inte vet så mycket om att utveckla Sub-procedurer vid det här laget, är det viktigt att veta hur man utför dessa procedurer. En subprocedur är värdelös om du inte vet hur den ska utföras.

Förresten, att köra en Sub-procedur betyder samma sak som att köra eller anropa en Sub-procedur. Du kan använda vilken terminologi du vill.

Du kan köra en VBA Sub på många sätt; det är en anledning till att du kan göra så många användbara saker med Sub-procedurer. Här är en uttömmande lista över sätten att utföra en underprocedur:

  • Välj Kör → Kör Sub/UserForm (i VBE). Excel exekverar underproceduren där markören är placerad. Detta menykommando har två alternativ: F5-tangenten och knappen Kör Sub/UserForm på standardverktygsfältet i VBE. Dessa metoder fungerar inte om proceduren kräver ett eller flera argument.
  • Använd Excels Macro-dialogruta. Du öppnar den här rutan genom att välja Utvecklare → Kod → Makron eller genom att välja Visa → Makron → Makron. Eller kringgå menyfliksområdet och tryck bara på Alt+F8. När dialogrutan Makro visas, välj den underprocedur du vill ha och klicka på Kör. Den här dialogrutan listar endast de procedurer som inte kräver ett argument.
  • Tryck på Ctrl+tangenten (eller Ctrl+Skift+tangenten) tilldelad underproceduren (förutsatt att du tilldelat en).
  • Klicka på en knapp eller en form på ett kalkylblad. Knappen eller formen måste ha en underprocedur tilldelad – vilket är mycket enkelt att göra.
  • Från en annan Sub-procedur som du skriver.
  • Klicka på en knapp som du har lagt till i verktygsfältet Snabbåtkomst.
  • Från ett anpassat objekt som du har lagt till i menyfliksområdet.
  • När en händelse inträffar. Dessa händelser inkluderar att öppna arbetsboken, stänga arbetsboken, spara arbetsboken, göra en ändring i en cell, aktivera ett ark och andra saker.
  • Från fönstret Omedelbart i VBE. Skriv bara in namnet på underproceduren och tryck på Enter.

Några av dessa tekniker beskrivs nedan. För att följa med måste du ange en underprocedur i en VBA-modul:

Börja med en ny arbetsbok.

Tryck på Alt+F11 för att aktivera VBE.

Välj arbetsboken i projektfönstret.

Välj Infoga → Modul för att infoga en ny modul.

Ange följande i modulen:

Sub ShowCubeRoot()
  Num = InputBox("Ange ett positivt tal")
  MsgBox Num ^ (1/3) & " är kubroten."
Avsluta Sub

Denna procedur ber användaren om ett nummer och visar sedan numrets kubrot i en meddelanderuta. Dessa bilder visar vad som händer när du utför den här proceduren.

Namnge Excel VBA-subs och funktioner

Använder den inbyggda VBA InputBox-funktionen för att få ett nummer.

Du också vad som händer via MsgBox-funktionen här.

Namnge Excel VBA-subs och funktioner

Visar kubroten av ett tal via MsgBox-funktionen.

ShowCubeRoot är förresten inget exempel på ett bra makro. Den letar inte efter fel, så den misslyckas lätt. Försök att klicka på knappen Avbryt i inmatningsrutan eller ange ett negativt tal. Båda åtgärderna resulterar i ett felmeddelande.

Exekvera Excel VBA Sub-proceduren direkt

Ett sätt att utföra denna procedur är att göra det direkt från VBA-modulen där du definierade den. Följ dessa steg:

Aktivera VBE och välj VBA-modulen som innehåller proceduren.

Flytta markören någonstans i procedurens kod.

Tryck på F5 (eller välj Kör → Kör Sub/UserForm).

Svara på inmatningsrutan och klicka på OK.

Proceduren visar kubroten av det tal du angav.

Du kan inte använda Kör → Kör Sub/UserForm för att köra en underprocedur som använder argument, eftersom du inte har något sätt att skicka argumenten till proceduren. Om proceduren innehåller ett eller flera argument, är det enda sättet att exekvera det att anropa det från en annan procedur — som måste tillhandahålla argumentet/argumenten.

Utför proceduren från Excels Macro-dialogruta

För det mesta kör du underprocedurer från Excel, inte från VBE. Följande steg beskriver hur man kör ett makro med hjälp av Excels Macro-dialogruta:

Om du arbetar i VBE, aktivera Excel.
Att trycka på Alt+F11 är snabbrutten.

Välj Utvecklare → Kod → Makron (eller tryck på Alt+F8).
Excel visar dialogrutan som visas här.Namnge Excel VBA-subs och funktioner

Dialogrutan Makro listar alla tillgängliga underprocedurer.

Välj makrot.

Klicka på Kör (eller dubbelklicka på makrots namn i listrutan).

Dialogrutan Makro visar inte underprocedurer som använder argument. Det beror på att det inte finns något sätt för dig att specificera argumenten.

Köra ett Excel VBA-makro genom att använda en genvägstangent

Ett annat sätt att köra ett makro är att trycka på dess genvägsknapp. Men innan du kan använda den här metoden måste du tilldela makrot en genvägsknapp.

Du har möjlighet att tilldela en genvägsknapp i dialogrutan Spela in makro när du börjar spela in ett makro . Om du skapar proceduren utan att använda makroinspelaren, kan du tilldela en genvägstangent (eller ändra en befintlig kortkommando) genom att använda följande steg:

Välj Utvecklare → Kod → Makron.

Välj Subprocedurnamnet i listrutan.

I det här exemplet heter proceduren ShowCubeRoot.

Klicka på knappen Alternativ.
Excel visar dialogrutan Makroalternativ som visas här.Namnge Excel VBA-subs och funktioner

Dialogrutan Makroalternativ låter dig ställa in alternativ för dina makron.

Klicka på alternativet Genvägstangent och ange en bokstav i rutan märkt Ctrl.

Bokstaven du anger motsvarar den tangentkombination du vill använda för att utföra makrot. Om du till exempel skriver in den gemena bokstaven c kan du köra makrot genom att trycka på Ctrl+C. Om du anger en versal måste du lägga till Shift-tangenten i tangentkombinationen. Om du till exempel anger C kan du köra makrot genom att trycka på Ctrl+Skift+C.

Klicka på OK för att stänga dialogrutan Makroalternativ och klicka sedan på Avbryt för att stänga dialogrutan Makro.
När du har tilldelat en genvägstangent kan du trycka på den tangentkombinationen för att köra makrot. En genvägsknapp fungerar inte om den är tilldelad ett makro som använder ett argument.

Genvägstangenterna du tilldelar makron åsidosätter Excels inbyggda genvägstangenter. Till exempel är Ctrl+C standardgenvägstangenten för att kopiera data. Om du tilldelar Ctrl+C till ett makro kan du inte använda Ctrl+C för att kopiera. Detta är vanligtvis inte en stor sak eftersom Excel nästan alltid tillhandahåller andra sätt att utföra kommandon.

Exekvera Excel VBA-proceduren från en knapp eller form

Ibland kanske du gillar idén att tilldela makrot till en knapp (eller någon annan form) på ett kalkylblad. Följ dessa steg för att tilldela Excel-makrot till en knapp:

Aktivera ett kalkylblad.

Lägg till en knapp från gruppen Formulärkontroller.
För att visa gruppen Formulärkontroller, välj Utvecklare → Kontroller → Infoga.Namnge Excel VBA-subs och funktioner

Bandet, som visar kontrollerna som är tillgängliga när du klickar på Infoga på fliken Utvecklare.

Klicka på knappverktyget i gruppen Formulärkontroller.

Det är den första knappen i den första raden med kontroller.

Dra i kalkylbladet för att skapa knappen.
När du har lagt till knappen i ditt kalkylblad läser Excel dina tankar och visar dialogrutan Tilldela makro som visas nedan.Namnge Excel VBA-subs och funktioner

När du lägger till en knapp i ett kalkylblad visar Excel automatiskt dialogrutan Tilldela makro.

Välj det makro du vill tilldela knappen.

Klicka på OK.

När du har gjort tilldelningen körs makrot genom att klicka på knappen - precis som magi.

När du lägger till en knapp, notera att rullgardinsmenyn visar två uppsättningar kontroller: Formulärkontroller och ActiveX-kontroller. Dessa två grupper av kontroller ser likadana ut, men de är faktiskt väldigt olika. I praktiken är formulärkontrollerna lättare att använda.

Du kan också tilldela ett makro till någon annan form eller objekt. Anta till exempel att du vill köra ett makro när användaren klickar på ett rektangelobjekt. Följ dessa steg:

Lägg till rektangeln i kalkylbladet.

Infoga en rektangel genom att välja Infoga → Illustrationer → Former.

Högerklicka på rektangeln.

Välj Tilldela makro från dess snabbmeny.

Välj makrot i dialogrutan Tilldela makro.

Klicka på OK.
När du har utfört dessa steg körs det tilldelade makrot genom att klicka på rektangeln.

Utför proceduren från en annan Excel VBA-procedur

Du kan också köra en Excel VBA-procedur från en annan procedur. Följ dessa steg om du vill prova detta:

Aktivera VBA-modulen som innehåller ShowCubeRoot-rutinen.

Ange denna nya procedur (antingen ovan eller under ShowCubeRoot-koden – det gör ingen skillnad):

Sub NewSub()
  Ring ShowCubeRoot
Avsluta Sub

När du är klar kör du helt enkelt NewSub-makrot.

Det enklaste sättet att göra detta är att flytta markören någonstans inom NewSub-koden och trycka på F5. Observera att denna NewSub-procedur helt enkelt exekverar ShowCubeRoot-proceduren.

Förresten, nyckelordet Ring är valfritt. Uttalandet kan endast bestå av Sub-procedurens namn. Men att använda nyckelordet Call gör det helt klart att en procedur anropas.

Exekvera Excel VBA-funktionsprocedurer

Funktioner, till skillnad från underprocedurer, kan utföras på endast två sätt:

  • Genom att anropa funktionen från en annan underprocedur eller funktionsprocedur
  • Genom att använda funktionen i en kalkylbladsformel

Prova denna enkla funktion. Ange det i en VBA-modul:

Funktion CubeRoot(nummer)
  CubeRoot = nummer ^ (1 / 3)
Avsluta funktion

Den här funktionen är ganska knäpp; den beräknar bara kubikroten av talet som skickas till den som argument. Det ger dock en utgångspunkt för att förstå funktioner. Det illustrerar också ett viktigt koncept om funktioner: hur man returnerar värdet. (Du kommer väl ihåg att en funktion returnerar ett värde, eller hur?)

Observera att den enda kodraden som utgör denna funktionsprocedur utför en beräkning. Resultatet av matematiken (tal i potensen 1⁄3) tilldelas variabeln CubeRoot. Inte en slump är CubeRoot också namnet på funktionen. För att tala om för funktionen vilket värde som ska returneras, tilldelar du det värdet till namnet på funktionen.

Anropa Excel VBA-funktionen från en underprocedur

Eftersom du inte kan köra en funktion direkt måste du anropa den från en annan procedur. Ange följande enkla procedur i samma VBA-modul som innehåller CubeRoot-funktionen:

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

När du kör CallerSub-proceduren visar Excel en meddelanderuta som innehåller värdet för variabeln Ans, vilket är 5.

Här är vad som händer: CubeRoot-funktionen exekveras och den får argumentet 125. Beräkningen utförs av funktionens kod (med värdet som skickas som argument), och funktionens returnerade värde tilldelas variabeln Ans. MsgBox-funktionen visar sedan värdet på Ans-variabeln.

Försök att ändra argumentet som skickas till CubeRoot-funktionen och kör CallerSub-makrot igen. Det fungerar precis som det ska — förutsatt att du ger funktionen ett giltigt argument (ett positivt tal).

Förresten, CallerSub-proceduren skulle kunna förenklas lite. Ans-variabeln krävs egentligen inte om inte din kod kommer att använda den variabeln senare. Du kan använda detta enstaka uttalande för att få samma resultat:

MsgBox CubeRoot(125)

Anropa en Excel VBA-funktion från en kalkylbladsformel

Nu är det dags att anropa denna VBA-funktionsprocedur från en kalkylbladsformel. Aktivera ett kalkylblad i samma arbetsbok som innehåller CubeRoot-funktionsdefinitionen. Ange sedan följande formel i valfri cell:

=CubeRoot(1728)

Cellen visar 12, vilket verkligen är kubroten av 1 728.

Som du kanske förväntar dig kan du använda en cellreferens som argument för CubeRoot-funktionen. Till exempel, om cell A1 innehåller ett värde kan du ange =CubeRoot(A1) . I det här fallet returnerar funktionen talet som erhålls genom att beräkna kubroten av värdet i A1.

Du kan använda den här funktionen hur många gånger som helst i kalkylbladet. Precis som Excels inbyggda funktioner visas dina anpassade funktioner i dialogrutan Infoga funktion. Klicka på knappen Infoga funktion i verktygsfältet och välj kategorin Användardefinierad. Som visas nedan, listar dialogrutan Infoga funktion din egen funktion.

Namnge Excel VBA-subs och funktioner

CubeRoot-funktionen visas i kategorin Användardefinierad i dialogrutan Infoga funktion.

Om du vill att dialogrutan Infoga funktion ska visa en beskrivning av funktionen, följ dessa steg:

Välj Utvecklare → Kod → Makron.
Excel visar makrodialogrutan, men CubeRoot visas inte i listan. (CubeRoot är en funktionsprocedur, och den här listan visar endast Sub-procedurer.) Oroa dig inte.

Skriv ordet CubeRoot i rutan Makronamn.

Klicka på knappen Alternativ.

Ange en beskrivning av funktionen i rutan Beskrivning.

Klicka på OK för att stänga dialogrutan Makroalternativ.

Stäng makrodialogrutan genom att klicka på knappen Avbryt.
Denna beskrivande text visas nu i dialogrutan Infoga funktion.

Den här bilden visar CubeRoot-funktionen som används i kalkylbladsformler.

Namnge Excel VBA-subs och funktioner

Använda CubeRoot-funktionen i formler.

Vid det här laget kanske saker och ting börjar gå ihop för dig.

Leave a Comment

Hur man använder kommandona Gör om och upprepa i Word 2016

Hur man använder kommandona Gör om och upprepa i Word 2016

Lär dig att använda kommandona Gör om och Upprepa i Word 2016 för att effektivt hantera dina dokument. Dessa funktioner hjälper dig att enkelt ångra och återställa ändringar.

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows Microsoft Word öppnar filer i skrivskyddat läge, vilket gör det omöjligt att redigera dem? Oroa dig inte, metoderna finns nedan

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Så här åtgärdar du fel vid utskrift av felaktiga Microsoft Word-dokument Fel vid utskrift av Word-dokument med ändrade teckensnitt, röriga stycken, saknad text eller förlorat innehåll är ganska vanligt. Men gör det inte

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Om du har använt pennan eller överstrykningspennan för att rita på dina PowerPoint-bilder under en presentation, kan du spara ritningarna till nästa presentation eller radera dem så att nästa gång du visar den börjar du med rena PowerPoint-bilder. Följ dessa instruktioner för att radera ritningar med penna och överstrykningspenna: Radera linjer ett på […]

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteket innehåller CSS-filer, XSL-filer (Extensible Stylesheet Language) och bilder som används av fördefinierade mallsidor, sidlayouter och kontroller i SharePoint 2010. För att hitta CSS-filer i stilbiblioteket på en publiceringswebbplats: Välj Webbplatsåtgärder→Visa Allt webbplatsinnehåll. Innehållet på webbplatsen visas. Style-biblioteket ligger i […]

Formatera siffror i tusentals och miljoner i Excel-rapporter

Formatera siffror i tusentals och miljoner i Excel-rapporter

Överväldiga inte din publik med gigantiska siffror. I Microsoft Excel kan du förbättra läsbarheten för dina instrumentpaneler och rapporter genom att formatera dina siffror så att de visas i tusentals eller miljoner.

Hur man delar och följer SharePoint-webbplatser

Hur man delar och följer SharePoint-webbplatser

Lär dig hur du använder SharePoints sociala nätverksverktyg som låter individer och grupper kommunicera, samarbeta, dela och ansluta.

Hur man konverterar datum till Julian-format i Excel

Hur man konverterar datum till Julian-format i Excel

Julianska datum används ofta i tillverkningsmiljöer som en tidsstämpel och snabbreferens för ett batchnummer. Denna typ av datumkodning tillåter återförsäljare, konsumenter och serviceagenter att identifiera när en produkt tillverkades och därmed produktens ålder. Julianska datum används också i programmering, militären och astronomi. Annorlunda […]

Hur man skapar en Access Web App

Hur man skapar en Access Web App

Du kan skapa en webbapp i Access 2016. Så vad är en webbapp egentligen? Tja, webben betyder att den är online, och appen är bara en förkortning för "applikation". En anpassad webbapp är en onlinedatabasapplikation som nås från molnet med en webbläsare. Du bygger och underhåller webbappen i skrivbordsversionen […]

Snabbstartsfält i SharePoint 2010

Snabbstartsfält i SharePoint 2010

De flesta sidor i SharePoint 2010 visar en lista med navigeringslänkar i snabbstartsfältet till vänster på sidan. Snabbstartsfältet visar länkar till utvalt webbplatsinnehåll som listor, bibliotek, webbplatser och publiceringssidor. Snabbstartsfältet innehåller två mycket viktiga länkar: Länken Allt webbplatsinnehåll: […]