4 fejl, du kan undgå, når du programmerer Excel-makroer med VBA

Enkel kode og makro er nøglen til Microsoft Excel supermagter. Selv ikke-programmører kan nemt tilføje imponerende funktionalitet til deres regneark med Virtual Basics for Applications (VBA). Bare undgå disse programmering nybegynder fejl!

Enkel kode og makro er nøglen til Microsoft Excel supermagter.  Selv ikke-programmører kan nemt tilføje imponerende funktionalitet til deres regneark med Virtual Basics for Applications (VBA).  Bare undgå disse programmering nybegynder fejl!
Reklame

Microsoft Excel er et meget velegnet dataanalyseværktøj allerede, men med evnen til at automatisere gentagne opgaver med makroer Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA-scripts Sådan sender du e-mails fra et Excel-regneark ved hjælp af VBA-scripts Vi viser dig, hvordan du konfigurere automatiserede e-mails fra internt Excel ved hjælp af Collaboration Data Objects, (CDO) og VBA scripts. Vores kode skabeloner gør dette meget lettere end det lyder! Læs mere ved at skrive simpel kode i (VBA), det er så meget mere kraftfuldt. VBA kan dog forårsage en masse problemer, der bruges forkert.

Selvom du ikke er en programmør, tilbyder VBA enkle funktioner, der giver dig mulighed for at tilføje nogle rigtig imponerende funktionalitet til dine regneark. Så lad dig ikke forlade endnu!

Uanset om du er en VBA-guru, der skaber instrumentbræt i Excel, skal du bygge dit eget vejrdashboard i denne Google Spreadsheet Master Class. Byg dit eget vejrdashboard i denne Google Spreadsheet Master Class. Vil du ændre din Google Drive-konto til et intelligent vejranalysesystem, og udøv en Star Trek fantasi? Okay! Læs mere, eller en nybegynder, der kun ved at skrive enkle scripts, der udfører grundlæggende celleberegninger, kan du følge enkle programmeringsteknikker, der vil hjælpe dig med at forbedre oddsene ved at skrive ren og fejlfri kode.

Kom i gang med VBA

Hvis du ikke har programmeret i VBA i Excel før, er det faktisk ret nemt at aktivere udviklerværktøjerne. Bare gå til Fil > Valg og derefter Tilpas bånd . Du skal kun flytte Developer- kommandogruppen fra venstre rude til højre.

excel-vba1

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

excel-vba2

Den nemmeste måde at komme ind i kodeditorvinduet på dette tidspunkt er blot at klikke på knappen View Code under Controls i Developer-menuen.

1. Horrible Variable Names

Nu hvor du er i kodevinduet, er det på tide at begynde at skrive VBA-kode. Hvordan kan du lave din egen enkle app med VBA Hvordan kan du lave din egen enkle app med VBA For de af jer, der virkelig ville elske at kunne skrive din egen ansøgning, men har aldrig skrevet en enkelt kode kode før, jeg går igennem med at gøre din meget ... Læs mere. Det første vigtige trin i de fleste programmer, hvad enten det er i VBA eller et andet sprog, er at definere dine variabler.

I løbet af mit par årtier med kodeskrivning, kom jeg på tværs af mange tankegange, når det drejer sig om variable navngivningskonventioner og lærte et par ting på den hårde måde. Her er de hurtige tips til oprettelse af variable navne:

  • Lav dem så korte som muligt.
  • Gør dem så beskrivende som muligt.
  • Forord dem med variabel type (boolean, heltal osv.).
  • Husk at bruge det rigtige anvendelsesområde (se nedenfor).

Her er et eksempel på et screenshot fra et program, som jeg ofte bruger til at lave WMIC Windows-opkald fra Excel for at indsamle pc-oplysninger Sådan ser du alle dine pc-oplysninger ved hjælp af et simpelt Excel VBA-script Sådan ser du hele din pc-information ved hjælp af et enkelt Excel VBA Script Excel og 10 minutters arbejde giver dig mere detaljerede oplysninger om din computer, end du nogensinde troede var muligt. Lyder det for godt til at være sandt? Det er Windows, hvis du ved hvordan du bruger det. Læs mere .

excel-vba3

Når du vil bruge variablerne inde i en hvilken som helst funktion inde i modulet eller objektet (jeg vil forklare dette nedenfor), skal du erklære det som en "offentlig" variabel ved at prefacere erklæringen med Public . Ellers bliver variabler angivet ved at prefacing dem med ordet Dim .

Som du kan se, hvis variablen er et helt tal, er det prefaced med int . Hvis det er en streng, så str . Dette hjælper senere, mens du programmerer, fordi du altid ved, hvilken type data variablen holder, bare ved at kigge på navnet. Du vil også bemærke, at hvis der er noget som en streng, der indeholder et computernavn, kaldes variablen strComputerName .

Undgå at gøre meget forfaldne eller forvirrende variable navne, som du kun forstår. Gør det nemmere for en anden programmør at komme bag dig og forstå hvad det hele betyder!

En anden fejl, folk gør, er at forlade arknavne som standard "Sheet1", "Sheet2" osv. .. Dette giver yderligere forvirring til et program. I stedet navngive arkene, så de giver mening.

excel-vba4

På denne måde når du henviser til arknavnet i din Excel VBA-kode Brug VBA til at automatisere Internet Explorer-sessioner fra et Excel-regneark ved hjælp af VBA til at automatisere Internet Explorer-sessioner fra et Excel-regneark. Dens integration med Windows tillader styring af Internet Explorer i en række overraskende måder ved hjælp af Visual Basic for Applications (VBA) script fra ethvert program, der understøtter det, f.eks. Word, Outlook eller Excel. Læs mere, du henviser til et navn, der giver mening. I eksemplet ovenfor har jeg et ark, hvor jeg trækker i Netværksinformation, så jeg kalder arket "Netværk". Nu i koden, når jeg helst vil referere til netværkskortet, kan jeg gøre det hurtigt uden at kigge op på hvilket arknummer det er.

2. Bryde i stedet for at løbe

Et af de mest almindelige problemer, som nyere programmer har 6 livsvaner, at programmering kunne lære dig i dag 6 Livsvaner, at programmering kunne lære dig i dag Alt hvad du har brug for at vide om at leve et vellykket liv, kan du få fra et computerprogram. Tro mig ikke? Læs videre. Læs mere, når de begynder at skrive kode, håndterer løkker korrekt. Og da så mange mennesker, der bruger Excel VBA, er meget kode nybegyndere, er dårlig looping epidemi.

Looping er meget almindelig i Excel, fordi du ofte behandler dataværdier ned i 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 (enten en For-loop eller et Mens-look) med det samme, når en bestemt tilstand er sand.

excel-vba5

Du kan ignorere kompleksiteten af ​​koden ovenfor, bare bemærk at inden for den indre IF-erklæring er der mulighed for at forlade For-løkken, hvis tilstanden er sand. Her er et enklere eksempel:

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. Når en tilstand opstår, som du venter på for at afslutte en sløjfe, er fristelsen til bare øjeblikkelig springe ud af den stærk, men gør det ikke.

Oftere end ikke, er koden, der kommer efter den "pause", vigtig at behandle, selv den sidste gang gennem løkken, inden den går ud. En meget renere og mere professionel måde at håndtere forholdene på, hvor du vil efterlade en løkke halvvejs igennem, er bare at inkludere den afslutte tilstand i noget som en While statement.

 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, med den sidste gennemløb, når x er 5, og så glædeligt ud, når For-loop tæller op til 6. Ingen grund til at indeholde akavet EXIT eller BREAK kommandoer midterløkke.

3. Brug ikke arrayer

En anden interessant fejl, at nye VBA-programmerere Grundlæggende om Computerprogrammering 101 - Variabler og datatyper Grundlæggende om Computerprogrammering 101 - Variabler og datatyper Efter at have introduceret og snakket lidt om Objektorienteret Programmering før og hvor dets navnebringer kommer fra, syntes jeg det var tid vi gennemgå de absolutte grundlæggende grunde til programmering på en ikke-sproglig måde. Dette ... Læs mere gør forsøger at behandle alt inde i mange indlejrede sløjfer, der filtrerer ned gennem rækker og kolonner under beregningsprocessen.

Selvom dette kan fungere, kan det også medføre store præstationsproblemer, hvis du hele tiden skal udføre de samme beregninger på de samme numre i samme kolonne. Looping gennem denne kolonne og udvinde værdierne hver eneste gang er ikke kun kedelig at programmere, det er en dræber på din processor. En mere effektiv måde at håndtere lange lister over tal på er at bruge en matrix.

Hvis du aldrig har brugt en matrix før, så tag dig ikke i frygt. Forestil dig et array som en isterningsbakke med et vist antal "terninger", du kan sætte information i. Kuberne er nummereret fra 1 til 12, og det er sådan, at du "sætter" data ind i dem.

isterning-bakker

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

Dette skaber en "bakke" med 12 pladser til rådighed for dig at fylde.

Her er hvad en loop looping kode uden en matrix kan 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 behandles koden ned gennem hver enkelt celle i området og udfører temperaturberegningen.

Senere i programmet, hvis du nogensinde vil udføre en anden beregning på disse samme værdier, skal du duplikere denne kode, behandle ned gennem alle disse celler og udføre din nye beregning.

Nu, hvis du i stedet bruger et array, kan du gemme de 12 værdier i rækken i dit bekvemme opbevaringsarray. Så senere, når du vil køre beregninger mod disse tal, er de allerede i hukommelse og klar til at 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 at pege på array-elementet er kun nødvendig, fordi for-loop starter på 1. Array-elementer skal starte ved 0.

Men når du har din array alle lastet op med værdierne fra rækken, senere i programmet kan du bare piske sammen alle beregninger, du ønsker ved at bruge array.

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

Dette eksempel går igennem hele rækken array (UBound giver dig antallet af data værdier i arrayet), beregner temperaturen og sætter den derefter i et andet array kaldet arrMyTemps.

Du kan se, hvor meget enklere den anden beregningskode er. Og fra dette tidspunkt til, når du vil udføre flere beregninger på samme sæt tal, er din array allerede forudindlæst og klar til at gå.

4. Brug for mange referencer

Uanset om du programmerer i fuldgyldigt Visual Basic eller VBA, skal du inkludere "referencer" for at få adgang til visse funktioner, f.eks. Adgang til en Access-database eller skrive uddata til en tekstfil.

Referencer er slags som "biblioteker" fyldt med funktionalitet, som du kan få fat i, 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 .

excel-vba6

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

excel-vba7

I min erfaring kan valgene her skifte fra en Excel-installation til en anden, og fra en pc til en anden. Meget afhænger af, hvad andre mennesker har gjort med Excel på denne pc, om visse tilføjelser eller funktioner blev tilføjet eller aktiveret, eller om nogle andre programmører måske har brugt visse referencer i tidligere projekter.

Årsagen til, at det er godt at tjekke denne liste, skyldes unødvendige referencer for affaldssystemressourcer. Hvis du ikke bruger nogen XML-filmanipulation, hvorfor skal du derfor vælge Microsoft XML? Hvis du ikke kommunikerer med en database, skal du fjerne Microsoft DAO. Hvis du ikke skriver output til en tekstfil, skal du fjerne Microsoft Scripting Runtime .

Hvis du ikke er sikker på, hvad disse valgte referencer gør, skal du trykke på F2, og du vil se Objekt Explorer. Øverst i dette vindue kan du vælge referencebiblioteket til at gennemse.

excel-vba8

Når du har valgt, vil du se alle de objekter og tilgængelige funktioner, som du kan klikke på for at lære mere om.

Når jeg f.eks. Klikker på DAO-biblioteket, bliver det hurtigt klart, at det hele handler om at oprette forbindelse til og kommunikere med databaser.

excel-vba9

At reducere antallet af referencer, du bruger i dit programmeringsprojekt, er bare god fornuft, og det vil hjælpe med at gøre din samlede applikation køre mere effektivt.

Programmering i Excel VBA

Hele ideen om faktisk at skrive kode i Excel Spar tid med tekstoperationer i Excel Spar tid med tekstoperationer i Excel Excel kan gøre magi med tal og det kan håndtere tegn lige så godt. Denne vejledning viser, hvordan du analyserer, konverterer, erstatter og redigerer tekst i regneark. Disse grundlæggende grunde giver dig mulighed for at udføre komplekse transformationer. Læs mere skræmmer mange mennesker, men denne frygt er virkelig ikke nødvendigt. Visual Basic for Applications er et meget simpelt sprog at lære, og hvis du følger de ovennævnte grundlæggende fremgangsmåder, sikrer du dig, at din kode er ren, effektiv og let at forstå.

Kode du i VBA? Hvilke slags lektioner har du lært gennem årene, som du kan dele med andre læsere, der lærer VBA for første gang? Del dine tips i kommentarfeltet nedenfor!

Billedkreditter: Computer via www.BillionPhotos.com via Shutterstock, Farverige Ice Cube Bakker af hahauk via Shutterstock.com

In this article