Un tutorial per a principiants sobre com escriure macros VBA a Excel (i per què hauríeu d'aprendre)

Un tutorial per a principiants sobre com escriure macros VBA a Excel (i per què hauríeu d'aprendre)

Les macros d'Excel us poden estalviar un munt de temps automatitzant els processos d'Excel que utilitzeu sovint . Però les macros són en realitat força limitades. És fàcil cometre un error amb l’eina de gravació i el procés de gravació és incòmode.





L’ús de VBA per crear macros us proporciona molta més potència. Podeu indicar a Excel exactament què cal fer i com fer-ho. També teniu accés a moltes més funcions i funcions. Si utilitzeu Excel amb regularitat, val la pena aprendre a crear macros VBA.





Començarem amb els conceptes bàsics.





Què és VBA?

VBA és Visual Basic per a aplicacions , un llenguatge de programació que podeu utilitzar en moltes aplicacions de Microsoft. Visual Basic és un llenguatge de programació i VBA n'és la versió específica de l'aplicació. (Microsoft va interrompre Visual Basic el 2008, però VBA segueix funcionant).

Afortunadament per als no programadors, VBA és molt senzill i la interfície que utilitzeu per editar-la ofereix molta ajuda. Moltes de les ordres que utilitzarà apareixeran en suggeriments emergents i en completacions automàtiques, cosa que us ajudarà a fer que el vostre script funcioni ràpidament.



Tot i això, VBA triga una estona a acostumar-se.

Els avantatges de les macros VBA a Excel

Si VBA és més difícil que gravar una macro, per què l’utilitzaríeu? La resposta breu és que obteniu molta més potència de les macros VBA.





En lloc de fer clic al voltant del full de càlcul i enregistrar aquests clics, podeu accedir a tota la gamma de funcions i funcions d'Excel. Només cal saber-los utilitzar.

com jugar a jocs de PlayStation 2 en PC

I un cop us sentiu més còmode amb VBA, podeu fer totes les coses que podeu fer en una macro normal en molt menys temps. Els resultats també seran més previsibles, tal com expliqueu a Excel exactament Què fer. No hi ha cap ambigüitat.





Quan hàgiu creat la vostra macro VBA, és fàcil desar-la i compartir-la perquè tothom pugui aprofitar-la. Això és especialment útil quan treballeu amb molta gent que necessita fer les mateixes coses a Excel.

Vegem una macro VBA simple per veure com funciona.

Un exemple de macro VBA a Excel

Vegem una macro simple. El nostre full de càlcul conté els noms dels empleats, el número de botiga on treballen els empleats i les seves vendes trimestrals.

Aquesta macro afegirà les vendes trimestrals de cada botiga i escriurà aquests totals a les cel·les del full de càlcul (si no esteu segur de com accedir al diàleg VBA, consulteu el nostre tutorial VBA aquí ):

Sub StoreSales()
Dim Sum1 As Currency
Dim Sum2 As Currency
Dim Sum3 As Currency
Dim Sum4 As Currency
For Each Cell In Range('C2:C51')
Cell.Activate
If IsEmpty(Cell) Then Exit For
If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If
Next Cell

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

End Sub

Pot semblar llarg i complicat, però ho desglossem perquè pugueu veure els elements individuals i aprendre una mica sobre els conceptes bàsics de VBA.

Declaració del sub

Al principi del mòdul, tenim 'Sub StoreSales ()'. Això defineix un nou subanomenat StoreSales.

També podeu definir funcions: la diferència és que les funcions poden retornar valors i els subs no (si coneixeu altres llenguatges de programació, els subs són l'equivalent als mètodes). En aquest cas, no necessitem retornar cap valor, de manera que estem utilitzant un sub.

Al final del mòdul, tenim 'End Sub', que indica a Excel que hem acabat amb aquesta macro VBA.

Declaració de variables

Totes les primeres línies de codi del nostre script comencen per 'Dim'. Dim és l'ordre de VBA per declarar una variable.

Per tant, 'Dim Sum1' crea una nova variable anomenada 'Sum1'. Tot i això, hem d’explicar a Excel quin tipus de variable es tracta. Hem de triar un tipus de dades. Hi ha molts tipus de dades diferents a VBA --- podeu trobar el fitxer llista completa als documents d’ajuda de Microsoft .

Com que la nostra macro VBA tractarà de monedes, fem servir el tipus de dades de moneda.

La declaració 'Dim Sum1 As Currency' indica a Excel que creï una nova variable de moneda anomenada Sum1. Totes les variables que declareu han de tenir una sentència 'Com' per indicar-ne el tipus a Excel.

Començar un bucle For

Els bucles són algunes de les coses més potents que podeu crear en qualsevol llenguatge de programació. Si no esteu familiaritzat amb els bucles, consulteu aquesta explicació dels bucles de fer-mentre que. En aquest exemple, fem servir un bucle For, que també es descriu a l'article.

A continuació s’explica el bucle:

For Each Cell in Range('C2:C51')
[a bunch of stuff]
Next Cell

Això indica a Excel que iteri a través de les cel·les de l’interval que hem especificat. Hem utilitzat un Objecte de rang , que és un tipus d’objecte específic a VBA. Quan l’utilitzem d’aquesta manera --- Rang ('C2: C51') --- indica a Excel que estem interessats en aquestes 50 cel·les.

'Per a cadascun' indica a Excel que farem alguna cosa amb cada cel·la de l'interval. 'Next Cell' ve després de tot el que volem fer i li diu a Excel que comenci el bucle des del principi (començant per la següent cel·la).

També tenim aquesta afirmació: 'Si IsEmpty (Cell), llavors sortiu per'.

Es pot endevinar què fa?

Nota: Estrictament parlant, utilitzar un bucle While potser ha estat una millor opció . Tanmateix, per ensenyar, vaig decidir utilitzar un bucle For amb una sortida.

com tenir una ratxa a Snapchat

Instruccions If-Then-Else

El nucli d'aquesta macro en particular es troba a les declaracions If-Then-Else. Aquí teniu la nostra seqüència d’afirmacions condicionals:

If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If

En la seva major part, probablement podeu endevinar què fan aquestes afirmacions. És possible que no conegueu ActiveCell.Offset. 'ActiveCell.Offset (0, -1)' indica a Excel que miri la cel·la que hi ha a una columna a l'esquerra de la cel·la activa.

En el nostre cas, això indica a Excel que consulti la columna del número de botiga. Si Excel troba un 1 en aquesta columna, agafa el contingut de la cel·la activa i l’afegeix a Sum1. Si troba un 2, afegeix el contingut de la cel·la activa a Sum2. Etcètera.

Excel revisa totes aquestes afirmacions per ordre. Si el fitxer afirmació condicional està satisfet, completa la sentència Then. Si no, passa al següent ElseIf. Si arriba fins al final i no es compleix cap de les condicions, no prendrà cap mesura.

La combinació del bucle i els condicionants és el que impulsa aquesta macro. El bucle indica a Excel que passa per cada cel·la de la selecció i els condicionants li indiquen què cal fer amb aquesta cel·la.

Escriptura de valors de cel·la

Finalment, arribem a escriure els resultats dels nostres càlculs a les cel·les. Aquí hi ha les línies que fem servir per fer-ho:

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

Amb '.Value' i un signe igual, establim cadascuna d'aquestes cel·les al valor d'una de les nostres variables.

I ja està! Li expliquem a Excel que hem acabat d’escriure aquest Sub amb “End Sub” i que la macro VBA s’ha completat.

Quan executem la macro amb el fitxer macros botó al fitxer Desenvolupador , obtenim les nostres sumes:

Unir els blocs bàsics de VBA a Excel

Quan mireu la macro VBA per primera vegada, sembla força complexa. Però després de desglossar-lo en les seves parts constitutives, la lògica queda clara. Com qualsevol llenguatge de seqüència de comandaments, es necessita temps per acostumar-se a la sintaxi de VBA.

Però amb la pràctica, acumuleu el vostre vocabulari VBA i podreu escriure macros més ràpidament, amb més precisió i amb molta més potència del que mai no podríeu enregistrar.

Quan us quedeu atrapats, fer una cerca a Google és una manera ràpida de respondre a les vostres preguntes de VBA. I Referència de Microsoft Excel VBA pot ser útil si esteu disposat a aprofundir-hi per obtenir una resposta tècnica.

Quan estigueu còmode amb els conceptes bàsics, podeu començar a utilitzar VBA per a coses com ara enviant correus electrònics des d'Excel , exportant tasques d'Outlook i mostrant la informació del vostre PC.

wii o pots jugar a jocs de gamecube
Compartir Compartir Tweet Correu electrònic A continuació s’explica per què l’FBI va emetre un advertiment sobre el ransomware Hive

L'FBI va emetre una advertència sobre una varietat de ransomware especialment desagradable. A continuació s’explica el motiu pel qual cal ser especialment cautelós amb el ransomware de Hive.

Llegiu a continuació
Temes relacionats
  • Productivitat
  • Full de càlcul
  • Microsoft Excel
  • Microsoft Office 2016
  • macros
  • Tutorials de codificació
Sobre l'autor Després, Albright(506 articles publicats)

Dann és un assessor d’estratègia i màrqueting de contingut que ajuda les empreses a generar demanda i clients potencials. També fa blogs sobre màrqueting d’estratègia i contingut a dannalbright.com.

Més de Dann Albright

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