Här hittar du några råd du bör ta hänsyn till när du börjar utveckla dina egna Excel VBA-lösningar. Att följa dessa riktlinjer är inget universalmedel för att hålla dig borta från (programmerings)problem, men att följa dem kan hjälpa dig att undvika fallgropar som andra har snubblat över.
Deklarera alla variabler
Hur bekvämt det är: Börja helt enkelt skriva din VBA-kod utan att behöva gå igenom den tråkiga sysslan att deklarera varje variabel du vill använda. Även om Excel tillåter dig att använda odeklarerade variabler, är det bara att be om problem.
Det första budordet för VBA-programmering bör vara detta:
Du ska deklarera varje variabel.
Om du saknar självdisciplin, lägg till ett "Option Explicit" uttalande överst i dina moduler. På så sätt kommer din kod inte ens att köras om den innehåller en eller flera odeklarerade variabler. Att inte deklarera alla variabler har bara en fördel: Du sparar några sekunder. Men att använda odeklarerade variabler kommer så småningom att förfölja dig.
Blanda inte ihop lösenord med säkerhet
Lösenordsskydda bara VBA-projektet så är du säker, eller hur? Fel.
Att använda ett VBA-lösenord kan hindra de flesta tillfälliga användare från att se din kod. Men om någon verkligen vill kontrollera det, kommer han att komma på hur man knäcker lösenordet.
Slutsats? Om du absolut måste hålla din kod hemlig är Excel inte det bästa valet för en utvecklingsplattform.
Rensa upp din kod
När din app fungerar tillfredsställande bör du rensa upp den. Kodhushållsuppgifter inkluderar följande:
-
Se till att varje variabel deklareras.
-
Se till att alla rader är korrekt indragna så att kodstrukturen är uppenbar.
-
Ta bort alla felsökningshjälpmedel, såsom MsgBox-satser för Debug.Print-satser.
-
Byt namn på alla dåligt namngivna variabler. Till exempel, om du använder variabeln MyVariable, finns det en ganska god chans att du kan göra variabelnamnet mer beskrivande. Du kommer att tacka dig själv senare.
-
Dina moduler har förmodligen några "test"-procedurer som du skrev när du försökte komma på något. De har tjänat sitt syfte, så ta bort dem.
-
Lägg till kommentarer så att du förstår hur koden fungerar när du återvänder till den om sex månader.
-
Se till att allt är rättstavat - särskilt text i användarformulär och meddelanderutor.
-
Kontrollera om det finns redundant kod. Om du har två eller flera procedurer som har identiska kodblock, överväg att skapa en ny procedur som andra procedurer kan anropa.
Lägg inte allt i ett förfarande
Vill du göra ett oförståeligt program? Ett effektivt sätt att åstadkomma det är att lägga all din kod i en trevlig stor procedur. Om du någonsin besöker det här programmet igen för att göra ändringar, kommer du att göra misstag och introducera några snygga buggar.
Ser du problemet? Lösningen är modulär kod. Dela upp ditt program i mindre bitar, med varje bit utformad för att utföra en specifik uppgift. När du har tagit till dig denna vana kommer du att upptäcka att det är lättare än någonsin att skriva felfri kod.
Överväg annan programvara
Excel är ett otroligt mångsidigt program, men det är inte lämpligt för allt. När du är redo att genomföra ett nytt projekt, ta dig tid att överväga alla dina alternativ. För att parafrasera ett gammalt talesätt, "När allt du vet är Excel VBA, ser allt ut som ett VBA-makro."
Anta inte att alla aktiverar makron
Som du vet låter Excel dig öppna en arbetsbok med dess makron inaktiverade. I själva verket är det nästan som om designers av de senaste versionerna av Excel vill att användarna ska inaktivera makron.
Att aktivera makron när du öppnar en arbetsbok från en okänd källa är naturligtvis ingen bra idé. Så du måste känna dina användare. I vissa företagsmiljöer är alla Microsoft Office-makron inaktiverade och användaren har inget val i frågan.
En sak att tänka på är att lägga till en digital signatur i arbetsböckerna som du distribuerar till andra. På så sätt kan användaren vara säker på att arbetsböckerna faktiskt kommer från dig och att de inte har ändrats. Konsultera hjälpsystemet för mer information om digitala signaturer.
Ta för vana att experimentera
Att sätta upp enkla experiment är nästan alltid mycket effektivare än att införliva en ny idé i din befintliga kod utan att förstå vad dessa experiment ger.
Anta inte att din kod kommer att fungera med andra Excel-versioner
För närvarande är minst fem versioner av Excel vanliga runt om i världen. När du skapar en Excel-app har du absolut ingen garanti för att den kommer att fungera felfritt i äldre versioner eller i nyare versioner. I vissa fall kommer inkompatibiliteterna att vara uppenbara. Men du kommer också att upptäcka att saker som borde fungera med en tidigare version inte fungerar.
Excel innehåller en praktisk kompatibilitetskontroll (välj Arkiv → Info → Sök efter problem → Kontrollera kompatibilitet), men den kontrollerar bara arbetsboken och ignorerar VBA-koden. Det enda sättet att vara säker på att din applikation fungerar med andra versioner än den du skapade den med är att testa den i dessa versioner.
Ha dina användare i åtanke
Om du utvecklar appar för andra är ditt jobb svårare eftersom du inte kan göra samma typer av antaganden som du gör när du utvecklar för dig själv.
Du kan till exempel vara mer slapp med felhantering om du är den enda användaren. Om ett fel dyker upp har du en ganska bra idé var du ska leta så att du kan fixa det. Om någon annan använder din app och samma fel visas har han eller hon tur. Och när du arbetar med din egen applikation kan du vanligtvis klara dig utan instruktioner.
Du måste förstå kompetensnivån hos dem som kommer att använda dina arbetsböcker och försöka förutse problem som de kan ha. Försök att föreställa dig dig själv som en ny användare av din applikation och identifiera alla områden som kan orsaka förvirring eller problem.
Glöm inte säkerhetskopior
Ingenting är mer nedslående än en hårddiskkrasch utan en säkerhetskopia. Om du arbetar med ett viktigt projekt, ställ dig själv en enkel fråga: "Om min dator dör ikväll, vad kommer jag att ha förlorat?" Om ditt svar är mer än några timmars arbete, måste du ta en närmare titt på din datasäkerhetskopiering. Du har väl ett säkerhetskopieringsförfarande?