4 feil du bør unngå når du programmerer Excel -makroer med VBA

4 feil du bør unngå når du programmerer Excel -makroer med VBA

Microsoft Excel er allerede et dyktig dataanalyseverktøy, men med muligheten til å automatisere repeterende oppgaver med makroer ved å skrive enkel kode i Visual Basic for Applications (VBA) er det mye kraftigere. Brukt feil, men VBA kan forårsake problemer.





Selv om du ikke er en programmerer, tilbyr VBA enkle funksjoner som lar deg legge til imponerende funksjonalitet i regnearkene dine.





Det spiller ingen rolle om du er en VBA -guru som lager dashbord i Excel, eller en nybegynner som skriver enkle skript som gjør grunnleggende celleberegninger. Følg disse enkle programmeringsteknikkene for å lære å skrive ren, feilfri kode.





Komme i gang med VBA

VBA kan gjøre alle slags fine ting for deg. Fra å skrive makroer som endrer ark til sende e -post fra et Excel -regneark ved hjelp av VBA -skript det er svært få grenser for produktiviteten din.

Hvis du ikke har programmert i VBA i Excel før, må du aktivere utviklerverktøyene i Excel -programmet. Den gode nyheten er at det faktisk er ganske enkelt å aktivere utviklerverktøyene. Bare gå til Fil > Alternativer og så Tilpass båndet . Bare flytt på Utvikler kategorien fra venstre rute til høyre.



Sørg for at denne fanen er aktivert i avmerkingsboksen, og nå vil kategorien Utvikler vises i Excel -menyen.

Den enkleste måten å komme inn i kodeditorvinduet herfra er bare å klikke på Se kode knappen under Kontroller i Utvikler -menyen.





Du er nå klar til å skrive VBA -kode! Denne kategorien er hvor du får tilgang til VBA så vel som ta opp makroer i Excel . Nå som Excel er klar til å fungere, la oss gå over noen vanlige feil som du bør unngå og hvordan du kan forhindre dem.

1. Fryktelige variabelnavn

Nå som du er i kodevinduet, er det på tide å begynne å skrive VBA -kode. Det første viktige trinnet i de fleste programmer, enten det er i VBA eller et annet språk, er å definere variablene dine. Ikke riktig å navngi variabler er en av de vanligste programmeringsfeilene som nye utviklere gjør.





beste måten å skanne mange bilder

Gjennom mine tiår med kodeskriving har jeg støtt på mange tankeskoler når det gjelder konvensjoner med variabel navn og lært noen regler på den harde måten. Her er noen raske tips for å lage variabelnavn:

  • Gjør dem så korte som mulig.
  • Gjør dem så beskrivende som mulig.
  • Forord dem med variabeltypen (boolsk, heltall, etc ...).

Her er et eksempel på et skjermbilde fra et program som jeg bruker ofte til å ringe WMIC Windows -samtaler fra Excel for å samle informasjon om PC.

Når du vil bruke variablene inne i en funksjon i modulen eller objektet (jeg vil forklare dette nedenfor), må du deklarere den som en 'offentlig' variabel ved å gå foran deklarasjonen med Offentlig . Ellers blir variabler deklarert ved å gå foran ordet med dem Ingen .

Som du kan se, hvis variabelen er et heltall, går den foran med int . Hvis det er en streng, da s. s . Dette er en personlig preferanse som hjelper senere mens du programmerer fordi du alltid vil vite hvilken type data variabelen inneholder ved å se på navnet.

Sørg også for å navngi arkene i Excel -arbeidsboken.

På denne måten, når du refererer til arknavnet i Excel VBA -koden, refererer du til et navn som er fornuftig. I eksemplet ovenfor har jeg et ark der jeg henter inn nettverksinformasjon, så jeg kaller arket 'Nettverk'. Hver gang jeg vil referere til nettverksarket, kan jeg gjøre det raskt uten å slå opp hvilket arknummer det er.

2. Bryte i stedet for Looping

Et av de vanligste problemene nyere VBA -programmerere har når de begynner å skrive kode, er å håndtere sløyfer.

Looping er veldig vanlig i Excel fordi du ofte behandler dataverdier nedover en hel rad eller en kolonne, så du må løkke for å behandle dem alle.

Nye programmerere vil ofte bare bryte ut av en sløyfe (VBA For loops eller VBA Do While loops) umiddelbart når en bestemt betingelse er sann.

Her er et eksempel på at denne metoden brukes til å bryte en VBA -løkke.

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

Nye programmerere bruker denne tilnærmingen fordi den er enkel. Prøv å unngå eksplisitt å bryte en sløyfe.

Oftere enn ikke er koden som kommer etter den 'pausen' viktig å behandle. En mye renere og mer profesjonell måte å håndtere forhold der du ønsker å forlate en sløyfe halvveis i, er bare å inkludere denne utgangstilstanden i noe som en VBA While -uttalelse.

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

Dette gir en logisk flyt av koden din. Nå vil koden gå gjennom og stoppe når den når 6. Du trenger ikke å inkludere vanskelige EXIT- eller BREAK-kommandoer midt i løkken.

3. Bruker ikke matriser

En annen interessant feil som nye VBA -programmerere gjør er å prøve å behandle alt inne i mange nestede løkker som filtreres ned gjennom rader og kolonner under beregningsprosessen.

Dette kan også føre til store ytelsesproblemer. Å gå gjennom en kolonne og trekke ut verdiene hver eneste gang er en morder på prosessoren din. En mer effektiv måte å håndtere lange lister med tall på er å bruke en matrise.

Hvis du aldri har brukt en matrise før, ikke vær redd. Tenk deg en matrise som et isterningbrett med et visst antall 'terninger' du kan legge informasjon i. Kubene er nummerert 1 til 12, og det er slik du 'legger' data inn i dem.

Du kan enkelt definere en matrise bare ved å skrive Dim arrMyArray (12) som heltall .

hvordan bli kvitt et sideskift

Dette skaper en 'skuff' med 12 plasser du kan fylle opp.

Slik ser en loop looping -kode uten en matrise 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 dette eksemplet behandler koden ned gjennom hver eneste celle i området og utfører temperaturberegningen.

Hvis du noen gang vil utføre en annen beregning på de samme verdiene, ville prosessen være vanskelig. Du må duplisere denne koden, behandle ned gjennom alle disse cellene og utføre den nye beregningen. Alt for en endring!

Her er et bedre eksempel ved å bruke en matrise. La oss først lage matrisen.

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

De x-1 for å peke på matriseelementet er bare nødvendig fordi For -løkken starter på 1. Array -elementer må starte på 0.

Nå som du har matrisen er det veldig enkelt å behandle innholdet.

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

Dette eksemplet går gjennom hele radmatrisen ( UBound gir deg antall dataverdier i matrisen), gjør temperaturberegningen og setter den deretter inn i en annen matrise som heter arrMyTemps .

4. Bruke for mange referanser

Enten du programmerer i fullverdig Visual Basic eller VBA, må du inkludere 'referanser' for å få tilgang til visse funksjoner.

Referanser er omtrent som 'biblioteker' fylt med funksjonalitet som du kan bruke hvis du aktiverer den filen. Du finner referanser i utviklervisning ved å klikke på Verktøy i menyen og deretter klikke på Referanser .

Det du finner i dette vinduet er alle de valgte referansene for ditt nåværende VBA -prosjekt.

Du bør sjekke denne listen fordi unødvendige referanser kan kaste bort systemressurser. Hvis du ikke bruker noen XML -filmanipulering, hvorfor så beholde Microsoft XML valgt? Hvis du ikke kommuniserer med en database, må du fjerne Microsoft DAO, etc.

Hvis du ikke er sikker på hva disse utvalgte referansene gjør, trykker du på F2 og du vil se Object Explorer. Øverst i dette vinduet kan du velge referansebiblioteket du vil bla gjennom.

Når du har valgt, vil du se alle objektene og tilgjengelige funksjoner, som du kan klikke på for å lære mer om.

For eksempel, når jeg klikker på DAO -biblioteket, blir det raskt klart at dette handler om å koble til og kommunisere med databaser.

Å redusere antall referanser du bruker i programmeringsprosjektet ditt, er bare fornuftig, og vil bidra til å gjøre den generelle applikasjonen din mer effektiv.

kan data gjenopprettes etter en fabrikkinnstilling?

Programmering i Excel VBA

Hele ideen om å faktisk skrive kode i Excel skremmer mange mennesker, men denne frykten er virkelig ikke nødvendig. Visual Basic for Applications er et veldig enkelt språk å lære, og hvis du følger de grunnleggende vanlige praksisene som er nevnt ovenfor, vil du sikre at koden er ren, effektiv og lett å forstå.

Ikke stopp der skjønt. Bygg et sterkt grunnlag for Excel -ferdigheter med en VBA -opplæring for nybegynnere . Fortsett deretter å lære om VBA og makroer med ressurser som hjelper deg med å automatisere regnearkene.

Dele Dele kvitring E -post Er det verdt å oppgradere til Windows 11?

Windows har blitt redesignet. Men er det nok til å overbevise deg om å bytte fra Windows 10 til Windows 11?

Les neste
Relaterte temaer
  • Produktivitet
  • Programmering
  • Programmering
  • Visual Basic programmering
  • Microsoft Excel
Om forfatteren Anthony Grant(40 artikler publisert)

Anthony Grant er frilansskribent som dekker programmering og programvare. Han er en datavitenskap som jobber med programmering, Excel, programvare og teknologi.

Mer fra Anthony Grant

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere