Excel VBA-kodning: Arbeta med ett kodfönster

När du blir skicklig med Excel VBA lägger du mycket tid på att arbeta i kodfönster. Makron som du spelar in lagras i en modul och du kan skriva Excel VBA-kod direkt i en VBA-modul.

Minimera och maximera VBA-kodfönster

Om du har flera projekt öppna kan VBE ha många kodfönster vid varje given tidpunkt.

Excel VBA-kodning: Arbeta med ett kodfönster

Överbelastning av kodfönster är ingen vacker syn.

Kodfönster är ungefär som arbetsboksfönster i Excel. Du kan minimera dem, maximera dem, ändra storlek på dem, dölja dem, ordna om dem och så vidare. De flesta tycker att det är mycket lättare att maximera kodfönstret som de arbetar med. Om du gör det kan du se mer kod och hindrar dig från att bli distraherad.

För att maximera ett kodfönster, klicka på knappen Maximera på dess titelfält (till höger bredvid X). Eller dubbelklicka bara på dess titelrad för att maximera den. För att återställa ett kodfönster till dess ursprungliga storlek, klicka på knappen Återställ. När ett fönster är maximerat är dess namnlist inte synligt, så du hittar knappen Återställ under VBE-titelfältet.

Ibland kanske du vill ha två eller flera kodfönster synliga. Du kanske till exempel vill jämföra koden i två moduler eller kopiera kod från en modul till en annan. Du kan ordna fönstren manuellt eller välja Fönster → Sida horisontellt eller Fönster → Sida vertikalt för att ordna dem automatiskt.

Du kan snabbt växla mellan kodfönster genom att trycka på Ctrl+F6. Om du upprepar den tangentkombinationen fortsätter du att cykla genom alla öppna kodfönster. Genom att trycka på Ctrl+Skift+F6 växlar du genom fönstren i omvänd ordning. (För mer information, kolla in dessa Excel VBA-tangentbordsgenvägar .)

Genom att minimera ett kodfönster blir det ur vägen. Du kan också klicka på fönstrets stängningsknapp (som visar X) på ett kodfönsters namnlist för att stänga fönstret. (Om du stänger ett fönster döljs det bara, du kommer inte att förlora något.) För att öppna det igen, dubbelklicka bara på lämpligt objekt i projektfönstret. Förresten, att arbeta med dessa kodfönster låter svårare än vad det egentligen är.

Skapa en VBA-modul

I allmänhet kan en Excel VBA-modul innehålla tre typer av kod:

  • Deklarationer: En eller flera informationsutlåtanden som du lämnar till VBA. Du kan till exempel deklarera datatypen för variabler du planerar att använda eller ställa in några andra modulomfattande alternativ. Deklarationer är i grunden hushållningsutlåtanden. De är faktiskt inte avrättade.
  • Underprocedurer: En uppsättning programmeringsinstruktioner som, när de exekveras, utför någon åtgärd.
  • Funktionsprocedurer: En uppsättning programmeringsinstruktioner som returnerar ett enda värde (liknar i konceptet en kalkylbladsfunktion, till exempel SUM).

En enda VBA-modul kan lagra valfritt antal underprocedurer, funktionsprocedurer och deklarationer. Tja, det finns en gräns - cirka 64 000 tecken per modul. Det är osannolikt att du ens kommer nära att nå gränsen på 64 000 tecken. Men om du gjorde det är lösningen enkel: Sätt bara in en ny modul.

Hur du organiserar en VBA-modul är helt upp till dig. Vissa människor föredrar att behålla all sin VBA-kod för en applikation i en enda VBA-modul; andra gillar att dela upp koden i flera moduler. Det är ett personligt val, precis som att arrangera möbler.

Få in VBA-kod i en modul

En tom VBA-modul är som den falska maten du ser i fönstren på några kinesiska restauranger; det ser bra ut men det gör inte så mycket för dig. Innan du kan göra något vettigt måste du ha lite VBA-kod i VBA-modulen. Du kan få VBA-kod till en VBA-modul på tre sätt:

  • Ange koden direkt.
  • Använd Excel-makroinspelaren för att spela in dina åtgärder och konvertera dessa åtgärder till VBA-kod.
  • Kopiera koden från en modul och klistra in den i en annan.

Ange Excel VBA-kod direkt

Ibland är den bästa vägen den mest direkta. Att ange koden direkt innebär … ja, att ange koden direkt. Med andra ord, du skriver koden med hjälp av ditt tangentbord. Att skriva in och redigera text i en VBA-modul fungerar som du kan förvänta dig. Du kan markera, kopiera, klippa ut, klistra in och göra andra saker i texten.

Använd Tab-tangenten för att dra in några av raderna för att göra din kod lättare att läsa. Indrag är inte nödvändigt, men det är en bra vana att skaffa sig. När du studerar Excel VBA-kodning kommer du att förstå varför indragning av kodrader är användbart.

En enda rad med VBA-kod kan vara så lång som du behöver den. Däremot kanske du vill använda radfortsättningstecken för att bryta upp långa kodrader. Om du vill fortsätta en enskild rad med kod (även känd som en sats) från en rad till nästa, avslutar du den första raden med ett mellanslag följt av ett understreck (_). Fortsätt sedan uttalandet på nästa rad. Och glöm inte utrymmet. Ett understreck som inte föregås av ett mellanslag kommer inte att göra jobbet.

Här är ett exempel på ett enskilt uttalande uppdelat i tre rader:

Selection.Sort Key1:=Range("A1"), _
  Order1:=xlStigande, Header:=xlGuess, _
  Orientering:=xlTopToBottom

Det här uttalandet skulle fungera på exakt samma sätt om det skrevs in på en enda rad (utan fortsättningstecken). Observera att den andra och tredje raden i detta uttalande är indragna. Indrag är valfritt, men det hjälper till att förtydliga det faktum att dessa rader inte är separata påståenden.

De vitbelagda ingenjörerna som designade VBE förutsåg att människor skulle göra misstag. Därför har VBE flera nivåer av ångra och gör om. Om du raderade ett påstående som du inte borde ha, klicka på knappen Ångra i verktygsfältet (eller tryck på Ctrl+Z) tills påståendet dyker upp igen. När du har ångrat kan du klicka på Gör om-knappen för att utföra ändringarna du har ångrat.

Är du redo att ange en real-live-kod? Prova följande steg:

Skapa en ny arbetsbok i Excel.

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

Klicka på den nya arbetsbokens namn i projektfönstret.

Välj Infoga → Modul för att infoga en VBA-modul i projektet.

Skriv in följande kod i modulen:

Sub GuessName()
Msg = "Är ditt namn " & Application.UserName & "?"
Ans = MsgBox(Msg, vbYesNo)
Om Ans = vbNo Då MsgBox "Åh, strunt samma."
Om Ans = vbYes Då MsgBox "Jag måste vara synsk!"
Avsluta Sub

Placera markören var som helst i texten du skrev och tryck på F5 för att utföra proceduren.

F5 är en genväg för Kör → Kör Sub/UserForm. Om du skrev in koden korrekt, kör Excel proceduren och du kan svara på den enkla dialogrutan. Texten i dialogrutan kommer att skilja sig från texten som visas här.

Excel VBA-kodning: Arbeta med ett kodfönster

Proceduren GuessName visar denna dialogruta.

När du anger koden som listas i steg 5 kanske du märker att VBE gör vissa justeringar av texten du anger. Till exempel, efter att du skrivit undersatsen, infogar VBE automatiskt undersatsen End. Och om du utelämnar utrymmet före eller efter ett likhetstecken, infogar VBE utrymmet åt dig. Dessutom ändrar VBE färgen och versaler för viss text. Allt detta är helt normalt. Det är bara VBE:s sätt att hålla saker snyggt och läsbart.

Om du följde de föregående stegen skrev du bara en VBA Sub-procedur, även känd som ett makro. När du trycker på F5 kör Excel koden och följer instruktionerna. Med andra ord, Excel utvärderar varje påstående och gör vad du sa till det att göra. (Låt inte denna nyfunna kraft gå åt ditt huvud.) Du kan köra det här makrot hur många gånger som helst – även om det tenderar att förlora sin tilltalande efter några dussin gånger.

Detta enkla Excel-makro använder följande begrepp:

  • Definiera en underprocedur (första raden)
  • Tilldela värden till variabler (Msg och Ans)
  • Sammanfoga (sammanfoga) en sträng (med operatorn &)
  • Använda en inbyggd VBA-funktion (MsgBox)
  • Använda inbyggda VBA-konstanter (vbYesNo, vbNo och vbYes)
  • Använda en If-Then-konstruktion (två gånger)
  • Avsluta en underordnad procedur (sista raden)

Använda Excel VBA makroinspelare

Ett annat sätt du kan få kod till en VBA-modul är genom att spela in dina handlingar med hjälp av Excel-makroinspelaren.

Förresten, det finns absolut inget sätt att spela in GuessName-proceduren som visas ovan. Du kan bara spela in saker som du kan göra direkt i Excel. Att visa en meddelanderuta ingår inte i Excels normala repertoar. (Det är en VBA-grej.) Makroinspelaren är användbar, men i många fall behöver du förmodligen ange åtminstone en del kod manuellt.

Här är ett steg-för-steg-exempel som visar hur man spelar in ett makro som infogar ett nytt kalkylblad och döljer alla utom de tio första raderna och alla utom de tio första kolumnerna. Om du vill prova det här exemplet, börja med en ny tom Excel-arbetsbok och följ dessa steg:

Aktivera ett kalkylblad i arbetsboken.

Alla Excel-kalkylblad duger.

Klicka på fliken Utvecklare och se till att Använd relativa referenser inte är markerat.

Detta makro är inspelat med Absoluta referenser.

Välj Utvecklare → Kod → Spela in makro eller klicka på ikonen bredvid Klar-indikatorn till vänster i statusfältet.

Excel visar dialogrutan Spela in makro.

I dialogrutan Spela in makro, namnge makrot TenByTen, ange att du vill att makrot ska lagras i denna arbetsbok och tryck på Skift+T för genvägstangenten.

Makrot kan köras när du trycker på Ctrl+Skift+T.

Klicka på OK för att starta inspelningen. Excel infogar automatiskt en ny VBA-modul i projektet som motsvarar den aktiva arbetsboken.

Från och med denna tidpunkt konverterar Excel dina åtgärder till VBA-kod. Medan du spelar in förvandlas ikonen i statusfältet till en liten fyrkant. Detta är en påminnelse om att makroinspelaren är igång. Du kan också klicka på den ikonen för att stoppa makroinspelaren.

Klicka på ikonen Nytt ark till höger om den sista arkfliken.

Excel infogar ett nytt kalkylblad.

Markera hela kolumn K (den 11:e kolumnen) och tryck på Ctrl+Skift+högerpil; högerklicka sedan på valfri vald kolumn och välj Göm från genvägsmenyn.

Excel döljer alla valda kolumner.

Markera hela rad 11 och tryck på Ctrl+Skift+nedåtpil; högerklicka sedan på valfri vald rad och välj Göm från genvägsmenyn.

Excel döljer alla valda kolumner.

Välj cell A1.

Välj Utvecklare → Kod → Stoppa inspelning, eller klicka på knappen Stoppa inspelning i statusfältet (den lilla fyrkanten). Excel slutar registrera dina handlingar.

För att se detta nyinspelade makro, tryck på Alt+F11 för att aktivera VBE. Leta reda på arbetsbokens namn i projektfönstret. Du ser att projektet har en ny modul listad. Namnet på modulen beror på om du hade några andra moduler i arbetsboken när du började spela in makrot. Om du inte gjorde det, heter modulen Module1. Du kan dubbelklicka på modulen för att se kodfönstret för modulen.

Här är koden som genereras av dina handlingar:

Sub TenByTen()
'
' TenByTen Makro
'
' Kortkommando: Ctrl+Skift+T
'
  Sheets.Add After:=ActiveSheet
  Kolumner("K:K"). Välj
  Range(Selection, Selection.End(xlToRight)).Välj
  Selection.EntireColumn.Hidden = Sant
  Rows("11:11"). Välj
  Range(Selection, Selection.End(xlDown)).Välj
  Selection.EntireRow.Hidden = Sant
  Range("A1"). Välj
Avsluta Sub

För att prova detta makro, aktivera valfritt kalkylblad och tryck på kortkommandot som du tilldelade i steg 4: Ctrl+Skift+T.

Om du inte tilldelade makrot en genväg, oroa dig inte. Så här visar du en lista över alla tillgängliga makron och kör det du vill:

Välj Utvecklare → Kod → Makron. Tangentbordsfans kan trycka på Alt+F8.

Endera av dessa metoder visar en dialogruta som listar alla tillgängliga makron.

Välj makrot i listan (i det här fallet TenByTen).

Klicka på knappen Kör.

Excel kör makrot och du får ett nytt kalkylblad med tio synliga rader och tio synliga kolumner.

Du kan utföra valfritt antal kommandon och utföra valfritt antal åtgärder medan makroinspelaren är igång. Excel översätter plikttroget dina musåtgärder och tangenttryckningar till VBA-kod.

Och, naturligtvis, kan du också redigera makrot efter att du har spelat in det. För att testa dina nya färdigheter, försök att redigera makrot så att det infogar ett kalkylblad med nio synliga rader och kolumner – perfekt för ett Sudoku-pussel.

Kopierar VBA-kod

Den sista metoden för att få kod till en VBA-modul är att kopiera den från en annan modul eller från någon annan plats (som en webbplats). Till exempel kan en under- eller funktionsprocedur som du skriver för ett projekt också vara användbar i ett annat projekt. Istället för att slösa tid på att skriva in koden igen, kan du aktivera modulen och använda de vanliga kopierings- och klistraprocedurerna i Urklipp. (Du är förmodligen ganska förtjust i kortkommandon Ctrl+C för att kopiera och Ctrl+V för att klistra in.) Efter att ha klistrat in koden i en VBA-modul kan du ändra koden om det behövs.

Förresten, du hittar massor av VBA-kodexempel på webben. Om du vill prova dem väljer du koden i din webbläsare och trycker på Ctrl+C för att kopiera den. Aktivera sedan en modul och tryck på Ctrl+V för att klistra in den.

När du kopierar kod från en webbplats kräver det ibland en viss åtgärd. Till exempel kan citattecken vara "smarta citattecken" och de måste konverteras till enkla citattecken. Och ibland slingrar sig långa köer. Felaktiga påståenden är lätta att upptäcka i VBE eftersom de visas i rött.


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

Vad betyder lösarens felmeddelanden i Excel?

Vad betyder lösarens felmeddelanden i Excel?

För enkla problem hittar Solver i Excel vanligtvis snabbt de optimala Solver-variabelvärdena för objektivfunktionen. Men i vissa fall har Solver problem med att hitta Solver-variabelvärdena som optimerar objektivfunktionen. I dessa fall visar Solver vanligtvis ett meddelande eller ett felmeddelande som beskriver eller diskuterar problemet som […]