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

Enkel kode og makroer er nøklene til Microsoft Excel supermakt. Selv ikke-programmører kan enkelt legge til imponerende funksjonalitet i regnearkene med Virtual Basics for Applications (VBA). Bare unngå disse programmeringsbegynnerfeilene!

Enkel kode og makroer er nøklene til Microsoft Excel supermakt.  Selv ikke-programmører kan enkelt legge til imponerende funksjonalitet i regnearkene med Virtual Basics for Applications (VBA).  Bare unngå disse programmeringsbegynnerfeilene!
Annonse

Microsoft Excel er et svært kompetent dataanalyseværktøy allerede, men med muligheten til å automatisere repeterende oppgaver med makroer. Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skript. Slik sender du e-post fra et Excel-regneark ved hjelp av VBA-skript. Vi viser deg hvordan du sette opp automatiserte e-poster fra Excel ved hjelp av Collaboration Data Objects, (CDO) og VBA-skript. Våre kodemaler gjør dette mye enklere enn det høres ut! Les mer ved å skrive enkel kode i (VBA), det er så mye kraftigere. Imidlertid brukes feil, kan VBA forårsake mange problemer.

Selv om du ikke er programmerer, tilbyr VBA enkle funksjoner som gir deg mulighet til å legge til noen virkelig imponerende funksjonalitet i regnearkene dine, så ikke forlate ennå!

Enten du er en VBA-guru, som lager dashbord i Excel. Bygg ditt eget værpanel i denne klassen for Google Regneark. Bygg ditt eget værpanel i denne klassen for Google Regneark. Vil du slå Google Drive-kontoen din inn i et intelligent væranalysesystem, og leve ut en Star Trek fantasi? Ok! Les mer, eller en nybegynner, som bare vet hvordan man skriver enkle skript som gjør grunnleggende celleberegninger, kan du følge enkle programmeringsteknikker, som vil hjelpe deg med å forbedre oddsen ved å skrive ren og feilfri kode.

Komme i gang med VBA

Hvis du ikke har programmert i VBA i Excel før, er det faktisk ganske enkelt å aktivere utviklerverktøyene. Bare gå til Arkiv > Valg og deretter Tilpass bånd . Bare flytt Developer- kommandogruppen fra venstre rute til høyre.

excel-vba1

Kontroller at avkrysningsruten er aktivert, og nå vises fanen Utvikler i Excel-menyen.

excel-vba2

Den enkleste måten å komme inn i kodeditor-vinduet på dette punktet er å bare klikke på Vis kode- knappen under Kontroller i Utvikler-menyen.

1. Horrible Variable Names

Nå som du er i kodevinduet, er det på tide å begynne å skrive VBA-kode Hvordan du kan lage din egen enkle app med VBA Hvordan du kan lage din egen enkle app med VBA For de av dere som virkelig vil elske å kunne skrive din egen applikasjon, men har aldri skrevet en enkelt kodekode før, jeg skal gå gjennom deg og gjøre deg veldig ... Les mer. Det første viktige trinnet i de fleste programmer, enten det er i VBA eller et annet språk, er å definere variablene dine.

Gjennom mine tiår med kodeskriving, kom jeg over mange tankegang når det gjelder variabel navngivningskonvensjoner og lærte noen ting på den harde måten. Her er de raske tipsene for å lage variable navn:

  • Gjør dem så korte som mulig.
  • Gjør dem så beskrivende som mulig.
  • Forord dem med variabel type (boolean, heltall, etc ...).
  • Husk å bruke riktig omfang (se nedenfor).

Her er et eksempel skjermbilde fra et program som jeg ofte bruker til å lage WMIC Windows-anrop fra Excel for å samle PC-informasjon Slik ser du all din PC-informasjon ved hjelp av et enkelt Excel VBA-script Slik ser du all din PC-informasjon ved hjelp av en enkel Excel VBA Script Excel og 10 minutter med arbeid gir deg mer detaljert informasjon om datamaskinen din enn du trodde var mulig. Høres for godt ut til å være sant? Det er Windows, hvis du vet hvordan du bruker det. Les mer .

excel-vba3

Når du vil bruke variablene inne i en hvilken som helst funksjon inne i modulen eller objektet (jeg vil forklare dette nedenfor), må du deklarere det som en "offentlig" variabel ved å forhåndsdefinere erklæringen med Offentlig . Ellers blir variabler deklarert ved å prefacing dem med ordet Dim .

Som du kan se, hvis variabelen er et heltall, er det prefaced med int . Hvis det er en streng, så str . Dette hjelper senere mens du programmerer, fordi du alltid vet hvilken type data variabelen holder, bare ved å blinke på navnet. Du vil også merke at hvis det er noe som en streng som har et datamaskinnavn, blir variabelen kalt strComputerName .

Unngå å gjøre veldig innviklede eller forvirrende variabelnavn som bare du forstår. Gjør det lettere for en annen programmerer å komme bak deg og forstå hva det betyr!

En annen feil folk gjør er å forlate arknavn som standard "Sheet1", "Sheet2", etc ... Dette gir ytterligere forvirring til et program. I stedet oppgir arkene slik at de gir mening.

excel-vba4

På denne måten når du refererer til arknavnet i Excel VBA-koden, bruker du VBA til å automatisere Internet Explorer-økter fra et Excel-regneark ved hjelp av VBA for å automatisere Internet Explorer-økter fra et Excel-regneark. Integrasjonen med Windows tillater kontroll over Internet Explorer i en rekke overraskende måter å bruke Visual Basic for Applications (VBA) skript fra ethvert program som støtter det, for eksempel Word, Outlook eller Excel. Les mer, du henviser til et navn som gir mening. I eksemplet ovenfor har jeg et ark hvor jeg drar inn Nettverksinformasjon, så jeg kaller arket "Nettverk". Nå i koden, når som helst jeg vil referere til nettverksarket, kan jeg gjøre det raskt uten å se på hvilket arknummer det er.

2. Bryte i stedet for å løkke

En av de vanligste problemene som nyere programmer har, har 6 livsvaner som programmering kan lære deg i dag. 6 Livsvaner at programmering kan lære deg i dag Alt viktig som du trenger å vite om å leve et vellykket liv, kan du få fra et dataprogram. Tro ikke på meg? Les videre. Les mer når de begynner å skrive kode, håndterer løkkene riktig. Og siden så mange som bruker Excel VBA, er veldig mye kode nybegynnere, er dårlig looping epidemi.

Looping er svært vanlig i Excel, fordi du ofte behandler dataverdier ned en hel rad eller en kolonne, så du må sløyfe for å behandle dem alle. Nye programmerere vil ofte bare bryte ut av en sløyfe (enten en For-sløyfe eller En stund ser) umiddelbart når en viss tilstand er sant.

excel-vba5

Du kan ignorere kompleksiteten til koden ovenfor, bare vær oppmerksom på at i den indre IF-setningen er det et alternativ å gå ut av For-løkken hvis tilstanden er sant. Her er et enklere eksempel:

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

Nye programmerere tar denne tilnærmingen fordi det er enkelt. Når en tilstand oppstår som du venter på for å avslutte en sløyfe, er fristelsen til å bare hoppe ut av det sterk, men ikke gjør det.

Oftere enn ikke, koden som kommer etter at "pause" er viktig å behandle, selv sist gang gjennom løkken før du avslutter. En mye renere og mer profesjonell måte å håndtere forhold hvor du vil legge en løkke halvveis gjennom, er bare å inkludere den avslutte tilstanden i noe som en While-setning.

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

Dette gjør det mulig for en logisk strøm av koden din, med den siste gjennomløp når x er 5, og deretter gledelig utgang når For-løkken teller opptil 6. Ikke nødvendig å inkludere vanskelig EXIT eller BREAK kommandoer midtveis.

3. Ikke bruk arrays

En annen interessant feil som nye VBA-programmerere Grunnleggende om dataprogrammering 101 - Variabler og datatyper Grunnleggende om dataprogrammering 101 - Variabler og datatyper Etter å ha introdusert og snakket litt om Objektorientert Programmering før og hvor dets navnebringer kommer fra, trodde jeg det var på tide vi gå gjennom det absolutt grunnleggende for programmering på en ikke-språkspesifikk måte. Dette ... Les mer gjør det å prøve å behandle alt inne i en rekke nestede løkker som filtrerer ned gjennom rader og kolonner under beregningsprosessen.

Selv om dette kan fungere, kan det også føre til store ytelsesproblemer, hvis du hele tiden må utføre de samme beregningene på de samme tallene i samme kolonne. Looping gjennom denne kolonnen og utvinning verdiene hver gang er ikke bare kjedelig å programmere, det er en morder på prosessoren din. En mer effektiv måte å håndtere lange lister over tall på er å benytte en matrise.

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

icecube-brett

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

Dette skaper en "skuff" med 12 spor tilgjengelig for deg å fylle opp.

Her ser du en radsløyfekode uten en matrise:

 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 behandles koden ned gjennom hver enkelt celle i området og utfører temperaturberegningen.

Senere i programmet, hvis du noen gang vil utføre en annen beregning på disse samme verdiene, må du duplisere denne koden, behandle ned gjennom alle disse cellene og utføre den nye beregningen.

Nå, hvis du i stedet bruker en matrise, kan du lagre de 12 verdiene i raden i ditt praktiske lagringsarray. Så senere, når du vil kjøre beregninger mot disse tallene, er de allerede i minne og klar til å 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" for å peke på arrayelementet er bare nødvendig fordi for-loop starter på 1. Array-elementer må starte ved 0.

Men når du har din matrise fylt opp med verdiene fra raden, senere i programmet, kan du bare piske sammen alle beregninger du vil ha ved å bruke matrisen.

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

Dette eksemplet går gjennom hele raden array (UBound gir deg antall dataværdier i arrayet), gjør temperaturberegningen, og legger den deretter inn i en annen array kalt arrMyTemps.

Du kan se hvor mye enklere den andre beregningskoden er. Og fra dette tidspunktet, når du vil utføre flere beregninger på samme sett med tall, er din matrise allerede forhåndsinstallert og klar til å gå.

4. Bruk av for mange referanser

Enten du programmerer i fullverdig Visual Basic eller VBA, må du inkludere "referanser" for å få tilgang til bestemte funksjoner, for eksempel å få tilgang til en Access-database, eller skrive utdata til en tekstfil.

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

excel-vba6

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

excel-vba7

I min erfaring kan valgene her skifte fra en Excel-installasjon til en annen, og fra en PC til en annen. Mye avhenger av hva andre har gjort med Excel på denne PCen, om enkelte tilleggsprogrammer eller funksjoner ble lagt til eller aktivert, eller om noen andre programmerere kanskje har brukt visse referanser i tidligere prosjekter.

Grunnen til at det er bra å sjekke denne listen, er fordi unødvendige referanser kaster bort systemressurser. Hvis du ikke bruker XML-filmanipulering, hvorfor behold deretter Microsoft XML valgt? Hvis du ikke kommuniserer med en database, fjerner du Microsoft DAO. Hvis du ikke skriver utdata til en tekstfil, fjerner du Microsoft Scripting Runtime .

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

excel-vba8

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

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

excel-vba9

Å redusere antall referanser du bruker i programmeringsprosjektet, er bare god fornuft, og vil bidra til at din samlede applikasjon løper mer effektivt.

Programmering i Excel VBA

Hele ideen om faktisk å skrive kode i Excel Lagringstid med tekstoperasjoner i Excel Lagringstid med tekstoperasjoner i Excel Excel kan gjøre magi med tall og det kan håndtere tegn like bra. Denne håndboken viser hvordan du analyserer, konverterer, erstatter og redigerer tekst i regneark. Disse grunnleggende vil tillate deg å utføre komplekse transformasjoner. Les mer skremmer mange mennesker, men denne frykten er egentlig 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 sørge for at koden din er ren, effektiv og lett å forstå.

Kode du i VBA? Hva slags leksjoner har du lært gjennom årene som du kan dele med andre lesere som lærer VBA for første gang? Del dine tips i kommentarfeltet nedenfor!

Bildekreditter: Computer ved www.BillionPhotos.com via Shutterstock, Colorful Ice Cube Trays av hahauk via Shutterstock.com

In this article