4 errors a evitar en programar macros Excel amb VBA

4 errors a evitar en programar macros Excel amb VBA

Microsoft Excel ja és una eina d’anàlisi de dades capaç, però amb la possibilitat d’automatitzar tasques repetitives amb macros escrivint codi senzill a Visual Basic for Applications (VBA) és molt més potent. Si s’utilitza incorrectament, però, VBA pot causar problemes.



Fins i tot si no sou un programador, VBA ofereix funcions senzilles que us permeten afegir una funcionalitat impressionant als vostres fulls de càlcul.



Tant se val si sou un gurú de VBA que crea taulers de comandaments a Excel, o un novell que escriu scripts senzills que fan càlculs bàsics de cel·les. Seguiu aquestes senzilles tècniques de programació per aprendre a escriure un codi net i sense errors.





Introducció a VBA

VBA pot fer tot tipus de coses ordenades per vosaltres. Des de l'escriptura de macros que modifiquen els fulls a enviar correus electrònics des d’un full de càlcul Excel mitjançant scripts VBA hi ha molt pocs límits en la vostra productivitat.

Si no heu programat VBA a Excel abans, haureu d'activar les eines per a desenvolupadors al programa Excel. La bona notícia és que habilitar les eines per a desenvolupadors és realment bastant fàcil. Només cal anar a Dossier > Opcions i llavors Personalitza la cinta . Simplement moveu el fitxer Desenvolupador pestanya del tauler esquerre cap a la dreta.



Assegureu-vos que la casella de selecció tingui aquesta pestanya activada i que ara aparegui la pestanya Desenvolupador al menú Excel.

La manera més senzilla d’entrar a la finestra de l’editor de codi des d’aquí és fer clic a Mostra el codi botó a sota Controls al menú de desenvolupadors.

Ja esteu a punt per escriure el codi VBA. Aquesta pestanya és on també accedireu a VBA enregistrament de macros a Excel . Ara que Excel està preparat per funcionar, repassem alguns errors habituals que cal evitar i les formes de prevenir-los.

1. Noms de variables horribles

Ara que esteu a la finestra del codi, és hora de començar a escriure codi VBA. El primer pas important de la majoria de programes, ja sigui en VBA o en qualsevol altre idioma, és definir les variables. El fet de no anomenar correctament les variables és un dels errors de programació més freqüents que cometen els desenvolupadors nous.

per què el meu teclat no funciona al meu ordinador portàtil?

Al llarg de les meves dècades escrivint codi, he trobat moltes escoles de pensament quan es tracta de convencions de noms variables i he après algunes regles de la manera més difícil. Aquests són alguns consells ràpids per crear noms de variables:

  • Feu-los el més curts possible.
  • Feu-los el més descriptius possibles.
  • Predegeu-los amb el tipus de variable (booleà, enter, etc ...).

Aquí teniu una mostra de captura de pantalla d’un programa que faig servir sovint per fer trucades WMIC a Windows des d’Excel per recopilar informació de l’ordinador.

Quan vulgueu utilitzar les variables dins d'una funció dins del mòdul o l'objecte (ho explicaré a continuació), haureu de declarar-la com a variable 'pública' prologant la declaració amb Públic . En cas contrari, les variables es declararan prologant-les amb la paraula Cap .

Com podeu veure, si la variable és un nombre enter, s’hi introdueix int . Si és una cadena, llavors pàg . Aquesta és una preferència personal que us ajudarà més endavant mentre esteu programant, perquè sempre sabreu quin tipus de dades té la variable mirant el nom.

A més, assegureu-vos de posar nom als fulls del vostre llibre de treball d'Excel.

D'aquesta manera, quan feu referència al nom del full al vostre codi VBA d'Excel, us referiu a un nom que tingui sentit. A l'exemple anterior, tinc un full on tinc informació de xarxa, de manera que anomeno el full 'Xarxa'. Sempre que vull fer referència al full de xarxa, ho puc fer ràpidament sense buscar quin número de full es tracta.

2. Trencar en lloc de bucle

Un dels problemes més comuns que tenen els programadors VBA més recents quan comencen a escriure codi és tractar correctament els bucles.

El bucle és molt comú a Excel, ja que sovint esteu processant valors de dades en una fila sencera o en una columna, de manera que heu de fer un bucle per processar-los tots.

Els programadors nous solen voler sortir d’un bucle (VBA For Loops o VBA Do While) de forma instantània quan es compleix una determinada condició.

A continuació, es mostra un exemple d’aquest mètode que s’utilitza per trencar un bucle VBA.

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

Els nous programadors adopten aquest enfocament perquè és fàcil. Intenteu evitar trencar explícitament un bucle.

El més freqüent és que es processi el codi que apareix després d'aquest 'trencament'. Una manera molt més neta i professional de manejar les condicions en què voleu deixar un bucle a la meitat és incloure aquesta condició de sortida en alguna cosa com una declaració VBA While.

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

Això permet un flux lògic del vostre codi. Ara, el codi es farà un bucle i s’aturarà un cop arribi a 6. No cal incloure ordres EXT o incomprensibles del bucle mig.

3. No utilitzeu matrius

Un altre error interessant que cometen els nous programadors VBA és intentar processar tot el contingut de nombrosos bucles imbricats que es filtren a través de files i columnes durant el procés de càlcul.

Això també pot comportar problemes de rendiment importants. Cercar una columna i extreure'n els valors cada vegada és un problema per al vostre processador. Una manera més eficient de manejar llargues llistes de números és utilitzar una matriu.

Si mai no heu utilitzat una matriu, no tingueu por. Imagineu-vos una matriu com una safata de glaçons amb un nombre determinat de 'cubs' en què podeu posar informació. Els cubs estan numerats de l’1 al 12, i així és com els hi 'poseu' dades.

Podeu definir fàcilment una matriu només escrivint Dim arrMyArray (12) com a enter .

com veure fotos d’Instagram sense un compte

Això crea una 'safata' amb 12 ranures disponibles per omplir.

A continuació s’explica el codi d’un bucle de fila sense matriu:

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

En aquest exemple, el codi s'està processant a través de cada cel·la de l'interval i realitza el càlcul de la temperatura.

Si alguna vegada voleu fer algun altre càlcul sobre aquests mateixos valors, el procés seria desconcertant. Hauríeu de duplicar aquest codi, processar totes aquestes cel·les i realitzar el vostre nou càlcul. Tot per un canvi!

Aquí hi ha un millor exemple, utilitzant una matriu. En primer lloc, creem la matriu.

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

El x-1 per assenyalar l'element de matriu només és necessari perquè el bucle For comença a 1. Els elements de matriu han de començar a 0.

Ara que teniu la matriu, és molt senzill processar el contingut.

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

Aquest exemple repassa tota la matriu de files ( Enllaçat us proporciona el nombre de valors de dades de la matriu), fa el càlcul de la temperatura i, a continuació, la posa en una altra matriu anomenada arrMyTemps .

4. Ús de massa referències

Tant si esteu programant en Visual Basic com en VBA, haureu d'incloure 'referències' per accedir a determinades funcions.

Les referències són una mena de 'biblioteques' plenes de funcionalitats que podeu aprofitar si activeu aquest fitxer. Podeu trobar referències a la vista de desenvolupador fent clic a Eines al menú i després fent clic a Referències .

El que trobareu en aquesta finestra són totes les referències seleccionades actualment per al vostre projecte VBA actual.

Heu de comprovar aquesta llista perquè les referències innecessàries poden malgastar recursos del sistema. Si no feu servir cap manipulació de fitxers XML, per què heu de seleccionar Microsoft XML seleccionat? Si no us comuniqueu amb una base de dades, suprimiu Microsoft DAO, etc.

Si no esteu segur de què fan aquestes referències seleccionades, premeu F2 i veureu l’Explorador d’objectes. A la part superior d'aquesta finestra, podeu triar la biblioteca de referència per explorar.

Un cop seleccionat, veureu tots els objectes i funcions disponibles, sobre els quals podeu fer clic per obtenir més informació.

Per exemple, quan faig clic a la biblioteca DAO, es posa de manifest ràpidament que es tracta de connectar-se i comunicar-se amb bases de dades.

Reduir el nombre de referències que utilitzeu al vostre projecte de programació és senzill i us ajudarà a fer que la vostra aplicació general s’executi de manera més eficient.

puc descarregar programes a hulu

Programació en Excel VBA

Tota la idea d’escriure codi a Excel fa por a molta gent, però aquesta por no és necessària. Visual Basic per a aplicacions és un llenguatge molt senzill d’aprendre i, si seguiu les pràctiques habituals bàsiques esmentades anteriorment, us assegureu que el vostre codi sigui net, eficient i fàcil d’entendre.

No us atureu aquí. Construir una base sòlida de les habilitats d'Excel amb un Tutorial VBA per a principiants . Després, continueu aprenent sobre VBA i macros amb recursos per ajudar-vos a automatitzar els vostres fulls de càlcul.

Compartir Compartir Tweet Correu electrònic Val la pena actualitzar-lo a Windows 11?

Windows s’ha redissenyat. Però, n’hi ha prou per convèncer-vos de canviar de Windows 10 a Windows 11?

Llegiu a continuació
Temes relacionats
  • Productivitat
  • Programació
  • Programació
  • Programació Visual Basic
  • Microsoft Excel
Sobre l'autor Anthony Grant(40 articles publicats)

Anthony Grant és un escriptor independent que cobreix programació i programari. És un especialista en informàtica dedicat a la programació, Excel, programari i tecnologia.

Més de Anthony Grant

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us