Taula de continguts
Tutorial pas a pas perquè els principiants enregistrin, visualitzin, executin i desin una macro. També aprendràs algunes mecàniques internes de com funcionen les macros a Excel.
Les macros són una manera fantàstica d'automatitzar tasques repetitives a Excel. Si us trobeu fent les mateixes coses una i altra vegada, enregistreu els vostres moviments com a macro i assigneu-li una drecera de teclat. I ara, podeu fer que totes les accions enregistrades es realitzin automàticament, amb una sola tecla!
Com gravar una macro a Excel
Com altres eines de VBA, les macros d'Excel resideix a la pestanya Desenvolupador , que està oculta per defecte. Per tant, el primer que heu de fer és afegir la pestanya Desenvolupador a la vostra cinta d'Excel.
Per gravar una macro a Excel, seguiu aquests passos:
- A la <1 Pestanya>Desenvolupador , al grup Codi , feu clic al botó Enregistra macro .
Com a alternativa, feu clic al Enregistra Botó Macro al costat esquerre de la barra Estat :
Si preferiu treballar amb el teclat en lloc del ratolí, premeu el següent seqüència de tecles Alt , L , R (una per una, no totes les tecles alhora).
- Al quadre de diàleg Enregistra la macro que apareix, configureu els paràmetres principals de la vostra macro:
- A la Macro name , introduïu el nom de la macro. Intenteu que sigui significatiu i descriptiu, de manera que més endavant podreu trobar ràpidament la macro a la llista.
Enestalvieu molt de temps i nervis fent que la vostra corba d'aprenentatge sigui més suau i les macros més eficients.
Utilitzeu referències relatives per a l'enregistrament de macros
Per defecte, Excel utilitza absolut fer referència a per gravar una macro. Això vol dir que el vostre codi VBA sempre es referiria exactament a les mateixes cel·les que heu seleccionat, independentment d'on us trobeu al full de treball quan executeu la macro.
No obstant això, és possible canviar el comportament predeterminat a referència relativa . En aquest cas, VBA no codificarà les adreces de les cel·les, però funcionarà relativament a la cel·la activa (actualment seleccionada).
Per gravar una macro amb referència relativa, feu clic a Util·la <8 Botó>Referències relatives a la pestanya Desenvolupador . Per tornar a la referència absoluta, torneu a fer clic al botó per desactivar-la.
Per exemple, si enregistreu la configuració d'una taula amb la referència absoluta per defecte, la vostra macro sempre serà recrea la taula al mateix lloc (en aquest cas, Encapçalament a A1, Element1 a A2, Element2 a A3).
Sub Interval de referència_absoluta() ("A1"). Seleccioneu ActiveCell.FormulaR1C1 = Interval "Capçalera" ("A2"). Seleccioneu ActiveCell.FormulaR1C1 = Interval "Item1" ("A3" ). Seleccioneu ActiveCell.FormulaR1C1 = "Item2" End Sub
Si enregistreu la mateixa macro amb una referència relativa, la taula es crearà allà on col·loqueu el cursor abans d'executar la macro ( Encapçalament alcel·la activa, Item1 a la cel·la següent, i així successivament).
Sub Relative_Referencing() ActiveCell.FormulaR1C1 = "Encapçalament" ActiveCell.Offset(1, 0).Range( "A1" ). Seleccioneu ActiveCell.FormulaR1C1 = "Item1" ActiveCell.Offset(1, 0).Range( "A1" ). Seleccioneu ActiveCell.FormulaR1C1 = "Item2" ActiveCell.Offset(1, 0).Range( "A1" ). Seleccioneu End SubNotes:
- Quan feu servir referències relatives, assegureu-vos de seleccionar la cel·la inicial abans de començar a gravar una macro.
- La referència relativa no funciona per a tot. Algunes funcions d'Excel, p. convertir un interval en una taula, requereixen referències absolutes.
Seleccioneu intervals mitjançant tecles de drecera
Quan seleccioneu una cel·la o un interval de cel·les amb les tecles del ratolí o de fletxa, Excel escriu les adreces de les cel·les. En conseqüència, sempre que executeu una macro, les operacions enregistrades es realitzaran exactament a les mateixes cel·les. Si això no és el que voleu, utilitzeu dreceres per seleccionar cel·les i intervals.
Per exemple, enregistrem una macro que estableixi un format específic (d-mmm-aa) per a les dates a la taula següent:
Per a això, enregistreu les operacions següents: premeu Ctrl + 1 per obrir el diàleg Format cel·les > Data > triar format > D'ACORD. Si la vostra gravació inclou seleccionar l'interval amb el ratolí o les tecles de fletxa, Excel produirà el següent codi VBA:
Sub Date_Format() Range( "A2:B4" ). SeleccioneuSelection.NumberFormat = "d-mmm-yy" End SubL'execució de la macro anterior seleccionaria l'interval A2:B4 cada vegada. Si afegiu algunes files més a la vostra taula, la macro no les processarà.
Ara, vegem què passa quan seleccioneu la taula amb una drecera.
Coloqueu el cursor. a la cel·la superior esquerra de l'interval objectiu (A2 en aquest exemple), comenceu a gravar i premeu Ctrl + Maj + Final . Com a resultat, la primera línia del codi tindrà aquest aspecte:
Range(Selection, ActiveCell.SpecialCells(xlLastCell)). SeleccioneuAquest codi selecciona totes les cel·les de la cel·la activa a l'última cel·la utilitzada, el que significa que totes les dades noves s'inclouran automàticament a la selecció.
Com a alternativa, podeu utilitzar les combinacions Ctrl + Maj + Fletxes:
- Ctrl + Maj + fletxa dreta per seleccionar totes les cel·les utilitzades a la dreta, seguida de
- Ctrl + Maj + fletxa avall per seleccionar totes les cel·les utilitzades cap avall.
Això generarà dues línies de codi en comptes d'una, però el resultat serà el mateix: es seleccionaran totes les cel·les amb dades cap avall i a la dreta de la cel·la activa:
Interval(Selecció, Selecció. Final ( xlToRight)). Seleccioneu Interval (Selecció, Selecció. Final (xlAvall)). SeleccioneuEnregistra una macro per a la selecció en lloc de cel·les específiques
El mètode anterior (és a dir, seleccionar totes les cel·les utilitzades començant per la cel·la activa) funciona molt bé per realitzar les mateixes operacions a tota la taula. En algunsen situacions, però, és possible que vulgueu que la macro processi un determinat interval en lloc de tota la taula.
Per això, VBA proporciona l'objecte Selection que fa referència a les cel·les seleccionades actualment. . La majoria de les coses que es poden fer amb una gamma, també es poden fer amb selecció. Quin avantatge et dóna? En molts casos, no cal que seleccioneu res durant la gravació; només cal que escriviu una macro per a la cel·la activa. A continuació, seleccioneu qualsevol interval que vulgueu, executeu la macro i manipularà tota la selecció.
Per exemple, aquesta macro d'una línia pot formatar qualsevol nombre de cel·les seleccionades com a percentatges:
Sub Percent_Format () Selection.NumberFormat = "0,00%" End SubPlanifiqueu acuradament el que enregistreu
La gravadora de macros de Microsoft Excel captura gairebé tota la vostra activitat, inclosos els errors que cometeu i corregiu. Per exemple, si premeu Ctrl + Z per desfer alguna cosa, també es gravarà. Finalment, és possible que acabis amb molt de codi innecessari. Per evitar-ho, editeu el codi a l'Editor VB o atureu la gravació, suprimiu una macro deficient i comenceu a gravar de nou.
Feu una còpia de seguretat o deseu el llibre de treball abans d'executar una macro
El resultat d'Excel les macros no es poden desfer. Per tant, abans de la primera execució d'una macro, té sentit crear una còpia del llibre de treball o almenys desar el vostre treball actual per evitar canvis inesperats. Si la macro fa alguna cosa malament,tanqueu el llibre de treball sense desar-lo.
Mantingueu les macros enregistrades breus
Quan automatitzeu una seqüència de tasques diferents, podeu tenir la temptació d'enregistrar-les totes en una sola macro. Hi ha dues raons principals per no fer-ho. En primer lloc, és difícil gravar una macro llarga sense errors. En segon lloc, les macros grans són difícils d'entendre, provar i depurar. Per tant, és una bona idea dividir una macro gran en diverses parts. Per exemple, quan creeu una taula de resum a partir de diverses fonts, podeu utilitzar una macro per importar informació, una altra per consolidar dades i una tercera per formatar la taula.
Espero que aquest tutorial us hagi donat una mica d'informació. sobre com gravar una macro a Excel. De totes maneres, us agraeixo la lectura i esperem veure-us al nostre blog la setmana vinent!
noms de macro, podeu utilitzar lletres, números i guions baixos; el primer caràcter ha de ser una lletra. Els espais no es permeten, de manera que hauríeu de mantenir un nom d'una sola paraula començant cada part amb una lletra majúscula (p. ex., MyFirstMacro ) o separar paraules amb guió baix (p. ex., My_First_Macro ). - Al quadre Tecla de drecera , escriviu qualsevol lletra per assignar una drecera de teclat a la macro (opcional).
Es permeten tant les lletres majúscules com les minúscules, però seria recomanable utilitzar combinacions de tecles majúscules ( Ctrl + Maj + lletra ) perquè les dreceres de macro anul·len les dreceres d'Excel predeterminades mentre el llibre de treball que conté la macro està obert. Per exemple, si assigneu Ctrl + S a una macro, perdràs la possibilitat de desar els fitxers d'Excel amb una drecera. Si assigneu Ctrl + Maj + S, es mantindrà la drecera estàndard per desar.
- A la llista desplegable Desa macro a , trieu on voleu emmagatzemar la macro:
- Llibre de treball de macros personals : emmagatzema la macro en un llibre de treball especial anomenat Personal.xlsb . Totes les macros emmagatzemades en aquest llibre de treball estan disponibles sempre que utilitzeu Excel.
- Aquest llibre de treball (per defecte): la macro s'emmagatzemarà al llibre de treball actual i estarà disponible quan torneu a obrir el llibre de treball. o compartiu-lo amb altres usuaris.
- Nou llibre de treball : crea un nou llibre de treball i enregistra la macro en aquest llibre.
- A laquadre Descripció , escriviu una breu descripció del que fa la vostra macro (opcional).
Tot i que aquest camp és opcional, us recomano que proporcioneu sempre una breu descripció. Quan creeu moltes macros diferents, us ajudarà a entendre ràpidament què fa cada macro.
- Feu clic a D'acord per començar a gravar la macro.
- A la Macro name , introduïu el nom de la macro. Intenteu que sigui significatiu i descriptiu, de manera que més endavant podreu trobar ràpidament la macro a la llista.
- Feu les accions que vulgueu per automatitzar (vegeu l'exemple de macro d'enregistrament).
- Quan hàgiu acabat, feu clic al botó Atura la gravació de la pestanya Desenvolupador :
O el botó anàleg de la barra Estat :
Exemple d'enregistrament d'una macro a Excel
Per veure com funciona a la pràctica, enregistrem una macro que aplica algun format a les cel·les seleccionades. Per fer-ho, feu el següent:
- Seleccioneu una o més cel·les a les quals voleu donar format.
- A la pestanya Desenvolupador o Estat , feu clic a Enregistra la macro .
- Al quadre de diàleg Enregistra la macro , configureu els paràmetres següents:
- Anomeneu la macro Format_encapçalament (perquè anem a donar format a les capçaleres de les columnes).
- Coloqueu el cursor al quadre Tecla de drecera i premeu les tecles Maj + F simultàniament. Això assignarà la drecera Ctrl + Maj + F a la macro.
- Trieu emmagatzemar la macro en aquest llibre de treball.
- Per a Descripció , utilitzeu el text següent per explicar què és la macro fa: Fa el text en negreta, afegeix color de farciment i centra .
- Feu clic a D'acord per començar a gravar.
- Formateu les cel·les preseleccionades de la manera que vulgueu. Per a aquest exemple, utilitzem el format de text en negreta, el color de farciment blau clar i l'alineació central.
Consell. No seleccioneu cap cel·la després d'haver començat a gravar la macro. Això garantirà que tot el format s'apliqui a la selecció , no a un interval específic.
- Feu clic a Atura la gravació a la pestanya Desenvolupador o a la barra Estat .
Això és! La teva macro s'ha enregistrat. Ara, podeu seleccionar qualsevol rang de cel·les en qualsevol full, premeu la drecera assignada ( Ctrl + Maj + F ) i el vostre format personalitzat s'aplicarà immediatament a les cel·les seleccionades.
Com treballar amb macros gravades a Excel
Es pot accedir a totes les opcions principals que ofereix Excel per a les macros mitjançant el quadre de diàleg Macro . Per obrir-lo, feu clic al botó Macros de la pestanya Desenvolupador o premeu la drecera Alt+F8.
Al quadre de diàleg que s'obre, podeu veure una llista de macros disponibles en tots els llibres de treball oberts o associades a un llibre de treball concret i fer ús de les opcions següents:
- Executar - executa la macro seleccionada .
- Passa a : permet depurar i provar la macro a l'Editor de Visual Basic.
- Edita : obre la macro seleccionada al'Editor VBA, on podeu veure i editar el codi.
- Suprimeix : elimina permanentment la macro seleccionada.
- Opcions : permet canviar la macro propietats de la macro, com ara la tecla de drecera tecla i Descripció associades.
Com visualitzar macros a Excel
El codi d'una macro d'Excel es pot veure i modificar a l'Editor de Visual Basic. Per obrir l'Editor, premeu Alt + F11 o feu clic al botó Visual Basic de la pestanya Desenvolupador .
Si veieu l'editor de VB per primera vegada, si us plau, no us sentiu desanimat ni intimidat. No parlarem de l'estructura o la sintaxi del llenguatge VBA. Aquesta secció només us donarà una comprensió bàsica de com funcionen les macros d'Excel i què fa realment l'enregistrament d'una macro.
L'Editor de VBA té diverses finestres, però ens centrarem en les dues principals:
Explorador de projectes : mostra una llista de tots els llibres de treball oberts i els seus fulls. A més, mostra mòduls, formularis d'usuari i mòduls de classe.
Finestra de codi : aquí podeu veure, editar i escriure codi VBA per a cada objecte que es mostra a l'Explorador de projectes.
Quan vam gravar la macro de mostra, es van produir les coses següents al backend:
- Es va fer un mòdul nou ( Model1 ). s'ha inserit.
- El codi VBA de la macro es va escriure a la finestra Codi.
Per veure el codi d'una macro específica.mòdul, feu doble clic al mòdul ( Module1 en el nostre cas) a la finestra de l'Explorador de projectes. Normalment, un codi de macro té aquestes parts:
Nom de la macro
A VBA, qualsevol macro comença amb Sub seguit del nom de la macro i acaba amb End Sub , on "Sub" és l'abreviatura de Subrutina (també anomenat Procediment ). La nostra macro d'exemple s'anomena Header_Formatting() , de manera que el codi comença amb aquesta línia:
Sub Header_Formatting()Si voleu canviar el nom de la macro , simplement suprimiu el nom actual i escriviu-ne un de nou directament a la finestra Codi.
Comentaris
Les línies prefixades amb un apòstrofe (') i que es mostren en verd per defecte no s'executen. Aquests són comentaris afegits amb finalitats informatives. Les línies de comentaris es poden eliminar amb seguretat sense afectar la funcionalitat del codi.
Normalment, una macro registrada té d'1 a 3 línies de comentaris: nom de la macro (obligatori); descripció i drecera (si s'especifica abans de gravar).
Codi executable
Després dels comentaris, arriba el codi que executa les accions que has enregistrat. De vegades, una macro gravada pot tenir molt de codi superflu, que encara pot ser útil per esbrinar com funcionen les coses amb VBA :)
La imatge següent mostra què fa cada part del codi de la nostra macro:
Com executar una macro gravada
En executar una macro, dieu a Excel que torni al codi VBA gravat i executi elexactament els mateixos passos. Hi ha algunes maneres d'executar una macro gravada a Excel, i aquestes són les més ràpides:
- Si heu assignat una tecla de drecera a la macro, premeu aquesta drecera. .
- Premeu Alt + 8 o feu clic al botó Macros de la pestanya Desenvolupador . Al quadre de diàleg Macro , seleccioneu la macro desitjada i feu clic a Executar .
També és possible executar una macro gravada fent clic al vostre propi botó. Aquests són els passos per crear-ne una: Com crear un botó de macro a Excel.
Com desar macros a Excel
Si heu gravat una macro o heu escrit manualment codi VBA, per desar la macro , heu de desar el llibre de treball com a macro activada (extensió .xlms). A continuació us indiquem com:
- Al llibre de treball que conté la macro, feu clic al botó Desa o premeu Ctrl + S .
- A Desa com a quadre de diàleg, escolliu Llibre de treball amb macros d'Excel (*.xlsm) a la llista desplegable Desa com a tipus i, a continuació, feu clic a Desa :
Macros d'Excel: què hi ha i què no es registra
Com acabeu de veure, és bastant fàcil gravar una macro a Excel. Però per crear macros efectives, cal entendre què passa darrere de les escenes.
El que s'enregistra
La gravadora de macros d'Excel captura un munt de coses: gairebé tots els clics del ratolí i les tecles. Per tant, hauríeu de pensar detingudament els vostres passos per evitar l'excés de codidonar lloc a un comportament inesperat de la vostra macro. A continuació es mostren alguns exemples del que registra Excel:
- Seleccionant cel·les amb el ratolí o el teclat. Només es registra l'última selecció abans d'una acció. Per exemple, si seleccioneu l'interval A1:A10 i, a continuació, feu clic a la cel·la A11, només es registrarà la selecció d'A11.
- Format de cel·la, com ara el color de farciment i de lletra, l'alineació, les vores, etc.
- Format de nombres com ara percentatge, moneda, etc.
- Edició de fórmules i valors. Els canvis es registren després de prémer Retorn .
- Desplaçar-se, moure finestres d'Excel, canviar a altres fulls de treball i llibres de treball.
- Afegir, anomenar, moure i suprimir fulls de treball.
- Crear, obrir i desar llibres de treball.
- Execució d'altres macros.
El que no es pot enregistrar
Malgrat moltes coses diferents que Excel pot enregistrar, algunes característiques estan més enllà de les capacitats de la gravadora de macros:
- Personalitzacions de la cinta d'Excel i de la barra d'eines d'accés ràpid.
- Accions dins dels diàlegs d'Excel com ara Format condicionat o Cerca i substitueix (només s'enregistra el resultat).
- Interaccions amb altres programes. Per exemple, no podeu gravar copiar/enganxar d'un llibre d'Excel a un document de Word.
- Qualsevol cosa que involucre l'Editor de VBA. Això imposa les limitacions més importants, moltes coses que es poden fer a nivell de programació noser gravat:
- Creació de funcions personalitzades
- Mostrar quadres de diàleg personalitzats
- Fer bucles com ara For Next , For Each , Fer mentre , etc.
- Avaluació de condicions. A VBA, podeu utilitzar la instrucció IF Then Else per provar una condició i executar algun codi si la condició és certa o un altre codi si la condició és falsa.
- Executant codi basat en esdeveniments. . Amb VBA, podeu utilitzar molts esdeveniments per executar un codi associat amb aquest esdeveniment (com ara obrir un llibre de treball, tornar a calcular un full de treball, canviar la selecció, etc.).
- Ús d'arguments. Quan escriviu una macro a l'Editor de VBA, podeu proporcionar arguments d'entrada perquè una macro realitzi una tasca determinada. Una macro gravada no pot tenir cap argument perquè és independent i no està connectada a cap altra macro.
- Entendre la lògica. Per exemple, si enregistreu una macro que copia cel·les específiques, per exemple a la fila Total , Excel només registrarà les adreces de les cel·les copiades. Amb VBA, podeu codificar la lògica, és a dir, copiar els valors a la fila Total .
Tot i que les limitacions anteriors estableixen molts límits per a les macros enregistrades, segueixen sent un bon punt de partida. Encara que no tingueu ni idea del llenguatge VBA, podeu gravar ràpidament una macro i després analitzar-ne el codi.
Consells útils per gravar macros a Excel
A continuació trobareu alguns consells. i notes que potencialment poden