4 misstag som du kan undvika när du programmerar Excel-makroner med VBA
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. Så skickar du e-postmeddelanden från ett Excel-kalkylblad med hjälp av VBA-skript. Vår kodmall hjälper dig att ställa in upp automatiska e-postmeddelanden från Excel med hjälp av samarbetsdataobjekt (CDO) och VBA-skript. 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. Bara gå till Fil > alternativ och då Skräddarsy bandet. Flytta bara Utvecklare kommandogrupp från vänstra rutan till höger.
Kontrollera att kryssrutan är aktiverad, och nu visas fliken Utvecklare i din Excel-meny.
Det enklaste sättet att komma in i kodredigeringsfönstret vid denna punkt är bara att klicka på Visa kod knapp under kontroller i 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 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 .
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 “offentlig” variabel genom att förklara förklaringen med offentlig. Annars blir variablerna deklarerade genom att prefacing dem med ordet Dämpa.
Som du kan se, om variabeln är ett heltal, är det prefaced med int. Om det är en sträng, då 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, då 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 folk gör är att lämna arknamn som standard “Blad1”, “Sheet2”, etc ... Detta ger ytterligare förvirring till ett program. Istället, namnge lakan så att de är meningsfulla.
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 ringer arket “Nätverk”. 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
Ett 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 villkor är sant.
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:
För x = 1 till 20 Om x = 6 Då Avsluta För y = x + intRoomTemp Nästa jag
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 inte det.
Ofta, inte koden som kommer efter det “ha sönder” är viktigt att bearbeta, även sista gången genom slingan innan du lämnar. 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 statement.
Medan (x> = 1 OCH x<=20 AND x<>6) För x = 1 till 20 y = x + intRoomTemp Nästa jag vänder
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 obehagliga EXIT- eller BREAK-kommandon mitt-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 en isbitfack med ett visst antal “kuber” du kan lägga in information i. Kuberna är numrerade 1 till 12, och så är du “sätta” data till dem.
Du kan enkelt definiera en array bara genom att skriva Dimma arrMyArray (12) som heltal.
Detta skapar en “bricka” med 12 slitsar tillgängliga för dig att fylla upp.
Här är vad en rad looping code utan en array kan se ut:
Undertest1 () Dim x Som heltal intNumRows = Område ("A2", Räckvidd ("A2"). Slut (xldown)). Rader.Count-räckvidd ("A2"). Välj För x = 1 Till IntNumRows Om Räckvidd Ett "& str (x)). Värde < 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 Som helhet intNumRows = Räckvidd ("A2", Räckvidd ("A2"). Slut (xldown)). Rader.Count-räckvidd ("A2"). Välj För x = 1 Till intNumRows arrMyArray (x- 1) = Område ("A" & str (x)). Värde) ActiveCell.Offset (1, 0) .Välj nästa slutdel
De “x-1” för att peka på matriselementet är endast 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 ha med hjälp av matrisen.
Sub TempCalc () För x = 0 Till UBound (arrMyArray) arrMyTemps (y) = arrMyArray (x) * 32 - 100 Nästa 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 den 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 åtkomst till vissa funktioner, till exempel att komma åt en Access-databas eller skriva utdata till en textfil.
Referenser är typ av liknande “bibliotek” fylld med funktionalitet som du kan använda, om du aktiverar den filen. Du kan hitta Referenser i utvecklarvy genom att klicka på Verktyg i menyn och klicka sedan på referenser.
Vad du hittar i det här fönstret är alla aktuella valda referenser för ditt nuvarande VBA-projekt.
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 personer som 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 utdata 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 får se objektet Explorer. Överst i det här fönstret kan du välja referensbiblioteket för att bläddra.
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.
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 vanliga 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
Utforska mer om: Microsoft Excel, Programmering, Visual Basic Programmering.