4 misstag som du kan undvika när du programmerar Excel-makroner med VBA

Enkel kod och makron är nycklarna till Microsoft Excel supermakter. Även icke-programmörer kan enkelt lägga imponerande funktionalitet till sina kalkylblad med virtuella grunder för applikationer (VBA). Undvik bara dessa programmering nybörjare misstag!

Enkel kod och makron är nycklarna till Microsoft Excel supermakter.  Även icke-programmörer kan enkelt lägga imponerande funktionalitet till sina kalkylblad med virtuella grunder för applikationer (VBA).  Undvik bara dessa programmering nybörjare misstag!
Annons

Microsoft Excel är ett mycket kompetent dataanalysverktyg redan men med förmågan att automatisera repetitiva uppgifter med makron. Så skickar du e-postmeddelanden från ett Excel-kalkylblad med VBA-skript. Hur skickar du e-post från ett Excel-kalkylblad med VBA-skript Vi visar dig hur du konfigurera automatiserade e-postmeddelanden från Excel med hjälp av Collaboration Data Objects, (CDO) och VBA-skript. Våra kodmallar gör det mycket enklare än det låter! Läs mer genom att skriva enkel kod i (VBA), det är så mycket kraftfullare. Används felaktigt kan VBA orsaka många problem.

Även om du inte är en programmerare, erbjuder VBA enkla funktioner som gör att du kan lägga till några riktigt imponerande funktioner på dina kalkylblad, så lämna inte just ännu!

Oavsett om du är en VBA-guru som skapar instrumentpaneler i Excel, bygg din egen väderpanel i den här Google-kalkylarkmästarklassen Skapa ditt eget väderpanel i den här Google-kalkylarkmästarklassen Vill du göra ditt Google Drive-konto till ett intelligent väderanalyssystem, och leva ut en Star Trek fantasi? Ok! Läs mer, eller en nybörjare, som bara vet hur man skriver enkla skript som gör grundläggande cellberäkningar, du kan följa enkla programmeringstekniker, som hjälper dig att förbättra oddsen för att skriva ren och felfri kod.

Komma igång med VBA

Om du inte har programmerat i VBA i Excel tidigare är det faktiskt ganska lätt att aktivera utvecklingsverktygen att göra det. Gå bara till Arkiv > Alternativ och sedan Anpassa band . Flytta bara kommandot gruppen Developer från den vänstra rutan till höger.

excel-vba1

Kontrollera att kryssrutan är aktiverad, och nu visas fliken Utvecklare i din Excel-meny.

excel-vba2

Det enklaste sättet att komma in i kodredigeringsfönstret vid denna punkt är att bara klicka på knappen Visa kod under Kontroller på utvecklarmenyn.

1. Fruktansvärda variabla namn

Nu när du är i kodfönstret är det dags att börja skriva VBA-kod. Hur kan du göra din egen enkla app med VBA Hur kan du göra din egen enkla app med VBA För de av er som verkligen skulle älska att kunna skriva din egen ansökan, men har aldrig skrivit en enda kod kod innan jag kommer att gå igenom dig genom att göra din mycket ... Läs mer. Det första viktiga steget i de flesta program, oavsett om det är i VBA eller något annat språk, definierar dina variabler.

Under mitt par decennier av kodskrivning kom jag över många tankskolor när det gäller variabla namngivningskonventioner och lärde mig några saker på den svåra vägen. Här är de snabba tipsen för att skapa variabla namn:

  • Gör dem så korta som möjligt.
  • Gör dem så beskrivande som möjligt.
  • Förord ​​dem med variabel typ (booleskt, heltal etc ...).
  • Kom ihåg att använda rätt räckvidd (se nedan).

Här är ett exempel skärmdump från ett program som jag ofta använder för att göra WMIC Windows-samtal från Excel för att samla in PC-information Så här ser du all din PC-information med hjälp av ett enkelt Excel VBA-script Så här ser du all din datorinformation med hjälp av en enkel Excel VBA Script Excel och 10 minuters arbete ger dig mer detaljerad information om din dator än du någonsin trodde möjligt. Låter för bra för att vara sant? Det är Windows, om du vet hur du använder den. Läs mer .

excel-vba3

När du vill använda variablerna inuti någon funktion inuti modulen eller objektet (jag kommer att förklara detta nedan) måste du deklarera det som en "allmän" variabel genom att förklara förklaringen med Public . Annars blir variablerna deklarerade genom att prefacing dem med ordet Dim .

Som du kan se, om variabeln är ett heltal, är det prefaced med int . Om det är en sträng, så str . Detta hjälper senare när du programmerar eftersom du alltid vet vilken typ av data variabeln innehar, bara genom att titta på namnet. Du märker också att om det finns något som en sträng som innehåller ett datornamn, så heter variabeln strComputerName .

Undvik att göra mycket förvirrade eller förvirrande variabla namn som bara du förstår. Gör det lättare för en annan programmerare att komma bakom dig och förstå vad det innebär!

Ett annat misstag som människor gör är att lämna arknamn som standard "Sheet1", "Sheet2", etc ... Detta ger ytterligare förvirring till ett program. Istället, namnge lakan så att de är meningsfulla.

excel-vba4

På så sätt när du refererar till arknamnet i din Excel VBA-kod Använda VBA för att automatisera Internet Explorer-sessioner från ett Excel-kalkylblad med VBA för att automatisera Internet Explorer-sessioner från ett Excel-kalkylblad. Integration med Windows tillåter kontroll av Internet Explorer i ett antal överraskande sätt att använda Visual Basic for Applications (VBA) -skript från alla program som stöder det, till exempel Word, Outlook eller Excel. Läs mer, du hänvisar till ett namn som är meningsfullt. I exemplet ovan har jag ett ark där jag drar in nätverksinformation, så jag kallar arket "Network". Nu i koden, när jag vill referera till nätverket kan jag snabbt göra det utan att titta på vilket arknummer det är.

2. Bryta istället för att lösa

En av de vanligaste problemen som nyare programmerare har 6 livsvanor som programmering kan lära dig idag 6 Livsvanor som programmering kan lära dig idag Det är viktigt att du behöver veta om att leva ett framgångsrikt liv, du kan få från ett datorprogram. Tro mig inte? Läs vidare. Läs mer när de börjar skriva kod är korrekt hantera loopar. Och eftersom så många som använder Excel VBA är mycket nybörjare, dålig looping är epidemi.

Looping är mycket vanligt i Excel, eftersom du ofta behandlar datavärden ner en hel rad eller en kolumn så att du behöver slinga för att bearbeta dem alla. Nya programmerare vill ofta bara bryta sig ur en slinga (antingen en slinga eller ett ögonblick) direkt när ett visst tillstånd är sant.

excel-vba5

Du kan ignorera komplexiteten av koden ovan, bara notera att inom det inre IF-uttalandet finns det ett alternativ att avsluta For-slingan om villkoret är sant. Här är ett enklare exempel:

For x = 1 To 20 If x = 6 Then Exit For y = x + intRoomTemp Next i 

Nya programmerare tar detta tillvägagångssätt eftersom det är enkelt. När ett tillstånd inträffar som du väntar på för att avsluta en slinga är frestelsen att bara omedelbar hoppa ut av den stark, men gör det inte.

Ofta är inte koden som kommer efter det att "break" viktigt att bearbeta, till och med sista gången genom slingan innan den avslutas. Ett mycket renare och mer professionellt sätt att hantera förhållanden där du vill lämna en slinga halvvägs genom, är bara att inkludera det avslutade tillståndet i något som en While-uttalande.

 While (x>=1 AND x<=20 AND x6) For x = 1 To 20 y = x + intRoomTemp Next i Wend 

Detta möjliggör ett logiskt flöde av din kod, med den sista köra genom när x är 5 och sedan utträffas graciöst när For-slingan räknas upp till 6. Inget behov av att inkludera besvärliga EXIT- eller BREAK-kommandon i mid-loop.

3. Använd inte arrays

Ett annat intressant misstag som nya VBA-programmerare Grunderna för dataprogrammering 101 - Variabler och datatyper Grunderna för dataprogrammering 101 - Variabler och datatyper Efter att ha introducerat och pratat lite om Objektorienterad programmering före och där namnet kommer från, tyckte jag att det var dags att vi gå igenom de absoluta grunderna för programmering på ett icke-språkligt sätt. Detta ... Läs mer gör att försöka bearbeta allting inuti många kapslingar som filtrerar ner genom rader och kolumner under beräkningen.

Även om detta kan fungera kan det också leda till stora prestanda problem, om du ständigt måste utföra samma beräkningar på samma nummer i samma kolumn. Looping genom den kolumnen och extrahera värdena varje gång är inte bara tråkig att programmera, det är en mördare på din processor. Ett effektivare sätt att hantera långa listor med siffror är att använda en array.

Om du aldrig har använt en matris tidigare, ha ingen rädsla. Föreställ dig en matris som ett iskubbricka med ett visst antal "kuber" du kan lägga in information i. Kuberna är numrerade 1 till 12, och det är hur du "sätter" data i dem.

icecube-trays

Du kan enkelt definiera en array bara genom att skriva Dim arrMyArray (12) som Integer .

Detta skapar en "bricka" med 12 slitsar som du kan fylla på.

Här är vad en rad looping code utan en array kan se ut:

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows If Range("A" & str(x)).value< 100 then intTemp = (Range("A" & str(x)).value) * 32 - 100 End If ActiveCell.Offset(1, 0).Select Next End Sub 

I det här exemplet bearbetas koden nedåt genom varje enskild cell i intervallet och utför temperaturberäkningen.

Senare i programmet, om du någonsin vill utföra någon annan beräkning på samma värden, måste du duplicera den här koden, bearbeta ner genom alla dessa celler och utföra din nya beräkning.

Om du istället använder en array, kan du spara de 12 värdena i raden i din lämpliga lagringsgrupp. Senare, när du vill köra beräkningar mot dessa nummer, är de redan i minnet och redo att gå.

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows arrMyArray(x-1) = Range("A" & str(x)).value) ActiveCell.Offset(1, 0).Select Next End Sub 

"X-1" för att peka på matriselementet är bara nödvändigt eftersom for-slingan börjar vid 1. Array-element måste starta vid 0.

Men när du har din matris alla laddade upp med värdena från raden, senare i programmet kan du bara piska ihop alla beräkningar du vill använda med hjälp av matrisen.

 Sub TempCalc() For x = 0 To UBound(arrMyArray) arrMyTemps(y) = arrMyArray(x) * 32 - 100 Next End Sub 

Detta exempel går igenom hela raden array (UBound ger dig antalet datavärden i arrayen), gör temperaturberäkningen och lägger sedan in i en annan array som heter arrMyTemps.

Du kan se hur mycket enklare den andra beräkningskoden är. Och från och med den här tiden, när du vill utföra fler beräkningar på samma uppsättning siffror, är din matris redan förinstallerad och redo att gå.

4. Använda för många referenser

Oavsett om du programmerar i fullfjädrad Visual Basic eller VBA, måste du inkludera "referenser" för att komma åt vissa funktioner, till exempel att komma åt en Access-databas eller skriva utdata till en textfil.

Referenser är som "bibliotek" fyllda med funktionalitet som du kan använda om du aktiverar den filen. Du kan hitta Referenser i utvecklarvyn genom att klicka på Verktyg i menyn och sedan klicka på Referenser .

excel-vba6

Vad du hittar i det här fönstret är alla aktuella valda referenser för ditt nuvarande VBA-projekt.

excel-vba7

Enligt min erfarenhet kan valen här ändras från en Excel-installation till en annan, och från en dator till en annan. Mycket beror på vilka andra människor har gjort med Excel på den här datorn, om vissa tillägg eller funktioner har lagts till eller aktiverats, eller om vissa andra programmerare kanske har använt vissa referenser i tidigare projekt.

Anledningen till att det är bra att kolla denna lista beror på att onödiga referenser sätter bort systemresurser. Om du inte använder någon XML-filmanipulation, varför behåll Microsoft XML vald? Om du inte kommunicerar med en databas, ta bort Microsoft DAO. Om du inte skriver ut till en textfil, ta bort Microsoft Scripting Runtime .

Om du inte är säker på vad dessa valda referenser gör, tryck på F2 och du kommer att se objektet Explorer. Överst i det här fönstret kan du välja referensbiblioteket för att bläddra.

excel-vba8

När du väl valt, ser du alla objekt och tillgängliga funktioner, som du kan klicka på för att lära dig mer om.

När jag till exempel klickar på DAO-biblioteket blir det snabbt klart att det här handlar om att ansluta till och kommunicera med databaser.

excel-vba9

Att minska antalet referenser du använder i ditt programprojekt är bara bra och hjälper dig att göra din övergripande applikation effektivare.

Programmering i Excel VBA

Hela ideen att faktiskt skriva kod i Excel Spara tid med textoperationer i Excel Spara tid med textoperationer i Excel Excel kan göra magi med siffror och det kan hantera tecken lika bra. Den här handboken visar hur man analyserar, konverterar, ersätter och redigerar text i kalkylblad. Dessa grunder gör att du kan utföra komplexa omvandlingar. Läs mer skrämmer många människor, men denna rädsla är verkligen inte nödvändigt. Visual Basic for Applications är ett mycket enkelt språk att lära sig, och om du följer de grundläggande gemensamma metoderna som nämns ovan, kommer du att se till att din kod är ren, effektiv och lätt att förstå.

Kodar du i VBA? Vilka slags lektioner har du lärt dig genom de år som du kan dela med andra läsare som lär dig VBA för första gången? Dela dina tips i kommentarfältet nedan!

Bildkrediter: Dator via www.BillionPhotos.com via Shutterstock, Färgglada Ice Cube Brickor av hahauk via Shutterstock.com

In this article