4 fejl, der skal undgås, når du programmerer Excel -makroer med VBA

4 fejl, der skal undgås, når du programmerer Excel -makroer med VBA

Microsoft Excel er allerede et dygtigt dataanalyseværktøj, men med evnen til at automatisere gentagne opgaver med makroer ved at skrive enkel kode i Visual Basic for Applications (VBA) er det meget mere kraftfuldt. Anvendes forkert, men VBA kan forårsage problemer.





Selvom du ikke er en programmør, tilbyder VBA enkle funktioner, der giver dig mulighed for at tilføje imponerende funktionalitet til dine regneark.





Det er ligegyldigt, om du er en VBA -guru, der opretter dashboards i Excel, eller en nybegynder, der skriver enkle scripts, der foretager grundlæggende celleberegninger. Følg disse enkle programmeringsteknikker for at lære at skrive ren, fejlfri kode.



Kom godt i gang med VBA

VBA kan gøre alle slags pæne ting for dig. Fra at skrive makroer, der ændrer ark til afsendelse af e -mails fra et Excel -regneark ved hjælp af VBA -scripts der er meget få grænser for din produktivitet.

Hvis du ikke har programmeret i VBA i Excel før, skal du aktivere udviklerværktøjerne i dit Excel -program. Den gode nyhed er, at det faktisk er ret let at aktivere udviklerværktøjerne. Bare gå til Fil > Muligheder og så Tilpas bånd . Bare flyt Udvikler fane fra venstre rude til højre.



Sørg for, at afkrydsningsfeltet har denne fane aktiveret, og nu vises fanen Udvikler i din Excel -menu.

Den nemmeste måde at komme ind i kodeeditorvinduet herfra er bare at klikke på Se kode knappen under Kontrol i menuen Udvikler.





Du er nu klar til at skrive VBA -kode! Denne fane er, hvor du får adgang til VBA såvel som optagelse af makroer i Excel . Nu hvor Excel er klar til at arbejde, lad os gå over nogle almindelige fejl, der skal undgås, og måderne til at forhindre dem.

1. Frygtelige variabelnavne

Nu hvor du er i kodevinduet, er det tid til at begynde at skrive VBA -kode. Det første vigtige trin i de fleste programmer, hvad enten det er i VBA eller et andet sprog, er at definere dine variabler. Ikke korrekt navngivning af variabler er en af ​​de mest almindelige programmeringsfejl, som nye udviklere laver.





hvordan videresender jeg en tekst

Gennem mine årtier med kodeskrivning er jeg stødt på mange tankegange, når det kommer til variable navngivningskonventioner og lært et par regler på den hårde måde. Her er nogle hurtige tips til oprettelse af variabelnavne:

  • Gør dem så korte som muligt.
  • Gør dem så beskrivende som muligt.
  • Forord dem med variabeltypen (boolsk, heltal osv.).

Her er et eksempel på et skærmbillede fra et program, som jeg ofte bruger til at foretage WMIC Windows -opkald fra Excel for at indsamle pc -oplysninger.

Når du vil bruge variablerne inde i en funktion i modulet eller objektet (jeg vil forklare dette nedenfor), skal du erklære det som en 'offentlig' variabel ved at forordne erklæringen med Offentlig . Ellers bliver variabler erklæret ved at forord dem med ordet Ingen .

Som du kan se, hvis variablen er et heltal, er den indledt med int . Hvis det er en streng, så s . Dette er en personlig præference, der hjælper senere, mens du programmerer, fordi du altid ved, hvilken type data variablen indeholder ved at kigge på navnet.

Sørg også for at navngive arkene i din Excel -projektmappe.

På denne måde, når du refererer til arknavnet i din Excel VBA -kode, refererer du til et navn, der giver mening. I eksemplet ovenfor har jeg et ark, hvor jeg henter netværksoplysninger ind, så jeg kalder arket 'Netværk'. Hver gang jeg vil henvise til netværksarket, kan jeg gøre det hurtigt uden at slå op på hvilket arknummer det er.

2. Bryde i stedet for Looping

Et af de mest almindelige problemer, nyere VBA -programmører har, når de begynder at skrive kode, håndterer sløjfer korrekt.

Looping er meget almindelig i Excel, fordi du ofte behandler dataværdier ned ad en hel række eller en kolonne, så du skal løkke for at behandle dem alle.

Nye programmører vil ofte bare bryde ud af en loop (VBA For loops eller VBA Do While loops) med det samme, når en bestemt betingelse er sand.

Her er et eksempel på, at denne metode bruges til at bryde en VBA -loop.

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

Nye programmører tager denne tilgang, fordi det er let. Prøv og undgå eksplicit at bryde en sløjfe.

Oftere end ikke er koden, der kommer efter den 'pause', vigtig at behandle. En meget renere og mere professionel måde at håndtere forhold, hvor du vil forlade en sløjfe halvvejs, er bare at inkludere denne exit -tilstand i noget som en VBA While -erklæring.

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

Dette giver mulighed for en logisk strøm af din kode. Nu går koden igennem og stopper, når den når 6. Ingen grund til at inkludere akavede EXIT- eller BREAK-kommandoer midt i loop.

3. Brug ikke arrays

En anden interessant fejl, som nye VBA -programmører laver, er at forsøge at behandle alt inde i talrige indlejrede sløjfer, der filtreres ned gennem rækker og kolonner under beregningsprocessen.

Dette kan også føre til store ydelsesproblemer. Looping gennem en kolonne og udtrække værdierne hver eneste gang er en dræber på din processor. En mere effektiv måde at håndtere lange lister med numre på er at bruge et array.

Hvis du aldrig har brugt et array før, skal du ikke være bange. Forestil dig et array som en isterningbakke med et bestemt antal 'terninger', du kan lægge oplysninger i. Terningerne er nummereret 1 til 12, og det er sådan, man 'putter' data i dem.

Du kan nemt definere en matrix ved blot at skrive Dim arrMyArray (12) som heltal .

hvordan man laver en video til et levende foto

Dette skaber en 'bakke' med 12 pladser, som du kan fylde op.

Sådan kan en række looping -kode uden et array se ud:

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 dette eksempel behandler koden ned gennem hver enkelt celle i området og udfører temperaturberegningen.

Hvis du nogensinde vil udføre en anden beregning på de samme værdier, ville processen være klodset. Du bliver nødt til at kopiere denne kode, behandle ned gennem alle disse celler og udføre din nye beregning. Alt for en ændring!

Her er et bedre eksempel ved hjælp af en matrix. Lad os først oprette arrayet.

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

Det x-1 for at pege på array -elementet er kun nødvendigt, fordi For -løkken starter ved 1. Array -elementer skal starte ved 0.

Nu hvor du har arrayet, er det meget enkelt at behandle indholdet.

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

Dette eksempel går gennem hele rækken array ( UBound giver dig antallet af dataværdier i arrayet), foretager temperaturberegningen og sætter det derefter i et andet array kaldet arrMyTemps .

4. Brug af for mange referencer

Uanset om du programmerer i fuldgyldig Visual Basic eller VBA, skal du inkludere 'referencer' for at få adgang til visse funktioner.

Referencer ligner lidt 'biblioteker' fyldt med funktionalitet, som du kan trykke på, hvis du aktiverer den fil. Du kan finde referencer i udviklervisning ved at klikke på Værktøjer i menuen og derefter klikke på Referencer .

Det, du finder i dette vindue, er alle de aktuelt valgte referencer til dit nuværende VBA -projekt.

Du bør kontrollere denne liste, fordi unødvendige referencer kan spilde systemressourcer. Hvis du ikke bruger nogen XML -filmanipulation, hvorfor så beholde Microsoft XML valgt? Hvis du ikke kommunikerer med en database, skal du fjerne Microsoft DAO osv.

Hvis du ikke er sikker på, hvad disse udvalgte referencer gør, skal du trykke på F2 og du vil se Object Explorer. Øverst i dette vindue kan du vælge det referencebibliotek, du vil gennemse.

Når det er valgt, ser du alle objekterne og tilgængelige funktioner, som du kan klikke på for at lære mere om.

For eksempel, når jeg klikker på DAO -biblioteket, bliver det hurtigt klart, at dette handler om at oprette forbindelse til og kommunikere med databaser.

At reducere antallet af referencer, du bruger i dit programmeringsprojekt, er bare god fornuft og hjælper med at få din samlede applikation til at køre mere effektivt.

bedste tilføjelser til google docs

Programmering i Excel VBA

Hele ideen om faktisk at skrive kode i Excel skræmmer mange mennesker, men denne frygt er virkelig ikke nødvendig. Visual Basic for Applications er et meget enkelt sprog at lære, og hvis du følger de grundlæggende almindelige fremgangsmåder, der er nævnt ovenfor, sikrer du, at din kode er ren, effektiv og let at forstå.

Stop dog ikke der. Byg et stærkt fundament af Excel -færdigheder med en VBA tutorial for begyndere . Bliv derefter ved med at lære om VBA og makroer med ressourcer til at hjælpe dig med at automatisere dine regneark.

Del Del Tweet E -mail Er det værd at opgradere til Windows 11?

Windows er blevet redesignet. Men er det nok til at overbevise dig om at skifte fra Windows 10 til Windows 11?

Læs Næste
Relaterede emner
  • Produktivitet
  • Programmering
  • Programmering
  • Visual Basic programmering
  • Microsoft Excel
Om forfatteren Anthony Grant(40 artikler udgivet)

Anthony Grant er freelance skribent om programmering og software. Han er en datalogi med stor fokus på programmering, Excel, software og teknologi.

Mere fra Anthony Grant

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere