4 kļūdas, no kurām jāizvairās, programmējot Excel makro ar VBA

4 kļūdas, no kurām jāizvairās, programmējot Excel makro ar VBA

Microsoft Excel jau ir spējīgs datu analīzes rīks, taču ar iespēju automatizēt atkārtotus uzdevumus ar makro, rakstot vienkāršu kodu programmā Visual Basic for Applications (VBA), tas ir daudz jaudīgāk. Tomēr, ja to izmanto nepareizi, VBA var radīt problēmas.





Pat ja neesat programmētājs, VBA piedāvā vienkāršas funkcijas, kas ļauj izklājlapām pievienot iespaidīgu funkcionalitāti.





Nav svarīgi, vai esat VBA guru, kurš programmā Excel izveido informācijas paneļus, vai iesācējs, kurš raksta vienkāršus skriptus, kas veic šūnu pamata aprēķinus. Izpildiet šīs vienkāršās programmēšanas metodes, lai uzzinātu, kā rakstīt tīru kodu bez kļūdām.





Darba sākšana ar VBA

VBA jūsu vietā var paveikt visdažādākās lietas. No makro rakstīšanas, kas maina lapas, uz e -pasta ziņojumu sūtīšana no Excel izklājlapas, izmantojot VBA skriptus jūsu produktivitātei ir ļoti maz ierobežojumu.

Ja neesat programmējis VBA programmā Excel, jums Excel programmā jāiespējo izstrādātāja rīki. Labā ziņa ir tāda, ka izstrādātāju rīku iespējošana patiesībā ir diezgan vienkārša. Vienkārši dodieties uz Fails > Iespējas un tad Pielāgot lenti . Vienkārši pārvietojiet Izstrādātājs cilni no kreisās rūts uz labo pusi.



Pārliecinieties, vai izvēles rūtiņā ir iespējota šī cilne, un tagad jūsu Excel izvēlnē parādīsies cilne Izstrādātājs.

Vienkāršākais veids, kā nokļūt koda redaktora logā, ir noklikšķināt uz Skatīt kodu poga zem Vadīklas izvēlnē Izstrādātājs.





Tagad esat gatavs rakstīt VBA kodu! Šajā cilnē jūs piekļūsit VBA, kā arī makro ierakstīšana programmā Excel . Tagad, kad programma Excel ir gatava darbam, apskatīsim dažas izplatītas kļūdas, no kurām jāizvairās, un to novēršanas veidus.

1. Šausmīgi mainīgie nosaukumi

Tagad, kad esat koda logā, ir pienācis laiks sākt rakstīt VBA kodu. Pirmais svarīgais solis lielākajā daļā programmu neatkarīgi no tā, vai tas ir VBA vai kādā citā valodā, ir jūsu mainīgo definēšana. Nepareizi nosaukt mainīgos ir viena no visbiežāk sastopamajām programmēšanas kļūdām, ko pieļauj jaunie izstrādātāji.





kā pārraidīt netflix uz televizoru

Visu gadu desmitu koda rakstīšanas laikā esmu saskāries ar daudzām domu skolām, kad runa ir par mainīgām nosaukšanas konvencijām, un esmu iemācījusies dažus noteikumus. Šeit ir daži ātri padomi mainīgo nosaukumu izveidošanai:

  • Padariet tos pēc iespējas īsākus.
  • Padariet tos pēc iespējas aprakstošākus.
  • Ievadiet tos ar mainīgo veidu (Būla, vesels skaitlis utt.).

Šeit ir ekrānuzņēmuma paraugs no programmas, kuru es bieži izmantoju, lai veiktu WMIC Windows zvanus no Excel, lai apkopotu datora informāciju.

Ja vēlaties izmantot mainīgos moduļa vai objekta funkcijas iekšienē (es to paskaidrošu tālāk), jums tas jādeklarē kā “publisks” mainīgais, deklarāciju ievadot ar Publisks . Pretējā gadījumā mainīgie tiek deklarēti, ievadot tos ar vārdu Nav .

Kā redzat, ja mainīgais ir vesels skaitlis, tas ir ievadīts int . Ja tā ir virkne, tad lpp . Šī ir personīgā izvēle, kas palīdz vēlāk, kamēr jūs programmējat, jo, skatoties uz nosaukumu, jūs vienmēr zināt, kāda veida dati ir mainīgajam.

Noteikti nosauciet lapas arī savā Excel darbgrāmatā.

Tādā veidā, atsaucoties uz lapas nosaukumu savā Excel VBA kodā, jūs atsaucaties uz nosaukumu, kuram ir jēga. Iepriekš minētajā piemērā man ir lapa, kurā es ievelku tīkla informāciju, tāpēc es to saucu par tīklu. Ikreiz, kad vēlos atsaukties uz tīkla lapu, es to varu izdarīt ātri, nemeklējot lapas numuru.

2. Pārtraukums cilpas vietā

Viena no visbiežāk sastopamajām problēmām, kas rodas jaunākiem VBA programmētājiem, kad viņi sāk rakstīt kodu, ir pareizi tikt galā ar cilpām.

Cirkulācija programmā Excel ir ļoti izplatīta, jo bieži vien datu vērtības apstrādājat pa visu rindu vai kolonnu, tāpēc, lai tās visas apstrādātu, ir jāveic cilpa.

Jauni programmētāji bieži vēlas uzreiz izlauzties no cilpas (VBA cilpām vai VBA Do While cilpas), kad ir izpildīts kāds nosacījums.

Šeit ir piemērs, kā šī metode tiek izmantota, lai pārtrauktu VBA cilpu.

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

Jaunie programmētāji izmanto šo pieeju, jo tas ir viegli. Mēģiniet izvairīties no nepārprotamas cilpas pārtraukšanas.

Bieži vien ir svarīgi apstrādāt kodu, kas nāk pēc šī pārtraukuma. Daudz tīrāks un profesionālāks veids, kā rīkoties apstākļos, kad vēlaties pusceļā atstāt cilpu, ir tikai iekļaut šo izejas nosacījumu kaut ko līdzīgu VBA Kaut paziņojumam.

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

Tas nodrošina loģisku jūsu koda plūsmu. Tagad kods pārcelsies un apstāsies, kad būs sasniedzis 6. Nav nepieciešams iekļaut neērtās EXIT vai BREAK komandas cikla vidū.

3. Nelietojiet masīvus

Vēl viena interesanta kļūda, ko pieļauj jaunie VBA programmētāji, ir mēģinājums visu apstrādāt daudzās ligzdotās cilpās, kas aprēķina procesa laikā filtrē rindas un kolonnas.

Tas var izraisīt arī lielas veiktspējas problēmas. Cilpu aplūkošana un vērtību iegūšana katru reizi ir jūsu procesora slepkava. Efektīvāks veids, kā apstrādāt garus skaitļu sarakstus, ir masīva izmantošana.

Ja jūs nekad iepriekš neesat izmantojis masīvu, nebaidieties. Iedomājieties masīvu kā ledus kubu paplāti ar noteiktu skaitu “kubu”, kuros varat ievietot informāciju. Kubi ir numurēti no 1 līdz 12, un tā jūs tajos “ievietojat” datus.

Jūs varat viegli definēt masīvu, vienkārši ierakstot Dim arrMyArray (12) kā vesels skaitlis .

Windows 10 lēni pēc 2018 atjaunināšanas

Tādējādi tiek izveidota 'paplāte' ar 12 laika nišām, kuras varat aizpildīt.

Lūk, kā varētu izskatīties rindu cilpas kods bez masīva:

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

Šajā piemērā kods tiek apstrādāts katrā diapazona šūnā un tiek veikts temperatūras aprēķins.

Ja kādreiz vēlaties veikt citus aprēķinus par šīm pašām vērtībām, process būtu neveikls. Jums vajadzētu dublēt šo kodu, apstrādāt visas šīs šūnas un veikt jauno aprēķinu. Viss par vienu maiņu!

Šeit ir labāks piemērs, izmantojot masīvu. Vispirms izveidosim masīvu.

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

The x-1 lai norādītu uz masīva elementu, ir nepieciešams tikai tāpēc, ka cilpa For sākas ar 1. Masīva elementiem jāsākas ar 0.

Tagad, kad jums ir masīvs, ir ļoti vienkārši apstrādāt saturu.

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

Šis piemērs iet caur visu rindu masīvu ( UBound sniedz jums datu vērtību skaitu masīvā), aprēķina temperatūru un pēc tam ievieto to citā masīvā ar nosaukumu arrMyTemps .

4. Pārāk daudz atsauču izmantošana

Neatkarīgi no tā, vai programmējat pilnvērtīgā Visual Basic vai VBA, jums būs jāiekļauj “atsauces”, lai piekļūtu noteiktām funkcijām.

Atsauces ir sava veida “bibliotēkas”, kas ir piepildītas ar funkcijām, kuras varat izmantot, iespējojot šo failu. Atsauces varat atrast izstrādātāja skatā, noklikšķinot uz Rīki izvēlnē un pēc tam noklikšķiniet uz Atsauces .

Šajā logā jūs atradīsit visas pašreiz atlasītās atsauces jūsu pašreizējam VBA projektam.

Jums vajadzētu pārbaudīt šo sarakstu, jo nevajadzīgas atsauces var izšķērdēt sistēmas resursus. Ja neizmantojat nekādas manipulācijas ar XML failiem, kāpēc gan saglabāt Microsoft XML izvēli? Ja nesazināties ar datu bāzi, noņemiet Microsoft DAO utt.

Ja neesat pārliecināts, ko dara šīs atlasītās atsauces, nospiediet F2 un jūs redzēsit objektu pārlūku. Šī loga augšdaļā varat izvēlēties pārlūkojamo atsauces bibliotēku.

Kad esat atlasījis, jūs redzēsit visus objektus un pieejamās funkcijas, uz kurām varat noklikšķināt, lai uzzinātu vairāk.

Piemēram, noklikšķinot uz DAO bibliotēkas, ātri kļūst skaidrs, ka tas viss ir saistīts ar datu bāzu izveidi un saziņu ar tām.

Programmēšanas projektā izmantoto atsauču skaita samazināšana ir tikai saprātīga, un tas palīdzēs jūsu lietojumprogrammai darboties efektīvāk.

xbox one netiks savienots ar kontrolieri

Programmēšana programmā Excel VBA

Visa ideja par koda rakstīšanu programmā Excel biedē daudzus cilvēkus, taču šīs bailes patiešām nav vajadzīgas. Visual Basic for Applications ir ļoti vienkārša valoda, kuru iemācīties, un, ja jūs ievērosit iepriekšminēto parasto praksi, jūs nodrošināsit, ka jūsu kods ir tīrs, efektīvs un viegli saprotams.

Neapstājieties tur. Izveidojiet spēcīgu Excel prasmju pamatu, izmantojot VBA apmācība iesācējiem . Pēc tam turpiniet mācīties par VBA un makro, izmantojot resursus, kas palīdzēs automatizēt izklājlapas.

Kopīgot Kopīgot Čivināt E -pasts Vai ir vērts jaunināt uz Windows 11?

Windows ir pārveidots. Bet vai ar to pietiek, lai pārliecinātu jūs pāriet no Windows 10 uz Windows 11?

Lasīt Tālāk
Saistītās tēmas
  • Produktivitāte
  • Programmēšana
  • Programmēšana
  • Vizuālā pamata programmēšana
  • Microsoft Excel
Par autoru Entonijs Grants(40 publicēti raksti)

Entonijs Grants ir ārštata rakstnieks, kas aptver programmēšanu un programmatūru. Viņš ir datorzinātņu profesors, kurš nodarbojas ar programmēšanu, Excel, programmatūru un tehnoloģijām.

Vairāk no Entonija Granta

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu