Codificació Excel VBA: treballant amb una finestra de codi

A mesura que us adoneu amb Excel VBA, passeu molt de temps treballant a les finestres de codi. Les macros que enregistreu s'emmagatzemen en un mòdul i podeu escriure el codi VBA d'Excel directament en un mòdul VBA.

Minimització i maximització de les finestres de codi VBA

Si teniu diversos projectes oberts, el VBE pot tenir moltes finestres de codi en un moment donat.

Codificació Excel VBA: treballant amb una finestra de codi

La sobrecàrrega de la finestra de codi no és genial.

Les finestres de codi són molt semblants a les finestres dels llibres de treball a Excel. Podeu minimitzar-los, maximitzar-los, canviar-los la mida, amagar-los, reorganitzar-los, etc. La majoria de la gent troba molt més fàcil maximitzar la finestra de codi en què estan treballant. Si ho feu, podreu veure més codi i evitar que us distregueu.

Per maximitzar una finestra de codi, feu clic al botó Maximitza a la seva barra de títol (al costat de la X). O simplement feu doble clic a la seva barra de títol per maximitzar-la. Per restaurar una finestra de codi a la seva mida original, feu clic al botó Restaura. Quan una finestra està maximitzada, la seva barra de títol no és visible, de manera que trobareu el botó Restaura a sota de la barra de títol de VBE.

De vegades, és possible que vulgueu tenir dues o més finestres de codi visibles. Per exemple, és possible que vulgueu comparar el codi en dos mòduls o copiar el codi d'un mòdul a un altre. Podeu ordenar les finestres manualment o triar Finestra → Mosaico horitzontal o Finestra → Mosaí vertical per organitzar-les automàticament.

Podeu canviar ràpidament entre finestres de codi prement Ctrl+F6. Si repetiu aquesta combinació de tecles, continueu navegant per totes les finestres de codi obertes. Si premeu Ctrl+Maj+F6, es fa un cicle per les finestres en ordre invers. (Per obtenir més informació, consulteu aquestes dreceres de teclat d'Excel VBA .)

La minimització d'una finestra de codi la fa fora del camí. També podeu fer clic al botó Tanca de la finestra (que mostra una X) a la barra de títol d'una finestra de codi per tancar-la. (Tancar una finestra només l'amaga; no perdreu res.) Per obrir-la de nou, feu doble clic a l'objecte adequat a la finestra del projecte. Per cert, treballar amb aquestes finestres de codi sembla més difícil del que és realment.

Creació d'un mòdul VBA

En general, un mòdul Excel VBA pot contenir tres tipus de codi:

  • Declaracions: una o més declaracions d'informació que proporcioneu a VBA. Per exemple, podeu declarar el tipus de dades de les variables que voleu utilitzar o establir altres opcions per a tot el mòdul. Les declaracions són bàsicament declaracions de neteja. En realitat no s'executen.
  • Subprocediments: conjunt d'instruccions de programació que, quan s'executen, realitza alguna acció.
  • Procediments de funció: un conjunt d'instruccions de programació que retorna un únic valor (similar en concepte a una funció de full de treball, com ara SUMA).

Un únic mòdul VBA pot emmagatzemar qualsevol nombre de subprocediments, procediments de funció i declaracions. Bé, hi ha un límit: uns 64.000 caràcters per mòdul. És poc probable que fins i tot estigueu a prop d'arribar al límit de 64.000 caràcters. Però si ho feu, la solució és senzilla: només cal que inseriu un mòdul nou.

Com organitzeu un mòdul VBA depèn completament de vosaltres. Algunes persones prefereixen mantenir tot el codi VBA d'una aplicació en un únic mòdul VBA; a altres els agrada dividir el codi en diversos mòduls. És una elecció personal, igual que arreglar els mobles.

Aconseguint codi VBA en un mòdul

Un mòdul VBA buit és com el menjar fals que veus a les finestres d'alguns restaurants xinesos; es veu bé però realment no et fa gaire. Abans de poder fer res significatiu, heu de tenir algun codi VBA al mòdul VBA. Podeu obtenir codi VBA en un mòdul VBA de tres maneres:

  • Introduïu el codi directament.
  • Utilitzeu la gravadora de macros d'Excel per gravar les vostres accions i convertir-les en codi VBA.
  • Copieu el codi d'un mòdul i enganxeu-lo a un altre.

Introduïu directament el codi VBA d'Excel

De vegades, la millor ruta és la més directa. Introduir el codi directament implica... bé, introduir el codi directament. En altres paraules, escriviu el codi mitjançant el teclat. Introduir i editar text en un mòdul VBA funciona tal com podria esperar. Podeu seleccionar, copiar, tallar, enganxar i fer altres coses al text.

Utilitzeu la tecla Tab per sagnar algunes de les línies per facilitar la lectura del vostre codi. Sagnar no és necessari, però és un bon hàbit adquirir. A mesura que estudieu la codificació d'Excel VBA, entendreu per què el sagnat de línies de codi és útil.

Una única línia de codi VBA pot tenir el temps que necessiteu. Tanmateix, és possible que vulgueu utilitzar els caràcters de continuació de línia per trencar línies llargues de codi. Per continuar una sola línia de codi (també coneguda com a instrucció) d'una línia a la següent, acabeu la primera línia amb un espai seguit d'un guió baix (_). A continuació, continueu la declaració a la línia següent. I no oblidis l'espai. Un caràcter de subratllat que no va precedit d'un espai no farà la feina.

Aquí teniu un exemple d'una sola declaració dividida en tres línies:

Selection.Sort Key1:=Range("A1"), _
  Order1:=xlAscending, Capçalera:=xlGuess, _
  Orientació:=xlTopToBottom

Aquesta declaració funcionaria exactament de la mateixa manera si s'introduïa en una sola línia (sense caràcters de continuació de línia). Observeu que la segona i la tercera línies d'aquesta afirmació estan sagnades. El sagnat és opcional, però ajuda a aclarir el fet que aquestes línies no són declaracions separades.

Els enginyers de revestiment blanc que van dissenyar el VBE preveien que la gent s'equivocaria. Per tant, el VBE té múltiples nivells de desfer i refer. Si heu suprimit una declaració que no hauríeu de tenir, feu clic al botó Desfés de la barra d'eines (o premeu Ctrl+Z) fins que la instrucció torni a aparèixer. Després de desfer, podeu fer clic al botó Refés per dur a terme els canvis que heu desfet.

Esteu preparat per introduir algun codi real? Proveu els passos següents:

Creeu un nou llibre de treball a Excel.

Premeu Alt+F11 per activar el VBE.

Feu clic al nom del nou llibre de treball a la finestra del projecte.

Trieu Insereix → Mòdul per inserir un mòdul VBA al projecte.

Escriviu el codi següent al mòdul:

Sub GuessName ()
Msg = "El teu nom és " & Application.UserName & "?"
Resposta = MsgBox(Msg, vbYesNo)
Si Res = vbNo Aleshores MsgBox "Oh, no importa".
If Ans = vbYes Aleshores MsgBox "He de ser psíquic!"
End Sub

Col·loqueu el cursor en qualsevol lloc del text que heu escrit i premeu F5 per executar el procediment.

F5 és una drecera per a Executar → Executar sub/Formulari d'usuari. Si heu introduït el codi correctament, Excel executa el procediment i podeu respondre al quadre de diàleg senzill. El text del quadre de diàleg serà diferent del que es mostra aquí.

Codificació Excel VBA: treballant amb una finestra de codi

El procediment GuessName mostra aquest quadre de diàleg.

Quan introduïu el codi que apareix al pas 5, és possible que noteu que el VBE fa alguns ajustos al text que introduïu. Per exemple, després d'escriure la instrucció Sub, el VBE inserirà automàticament la instrucció End Sub. I si ometes l'espai abans o després d'un signe igual, el VBE insereix l'espai per a tu. A més, el VBE canvia el color i les majúscules d'algun text. Tot això és perfectament normal. És només la manera del VBE de mantenir les coses ordenades i llegibles.

Si heu seguit els passos anteriors, acabeu d'escriure un procediment VBA Sub, també conegut com a macro. Quan premeu F5, Excel executa el codi i segueix les instruccions. En altres paraules, Excel avalua cada declaració i fa el que li vau dir. (No deixeu que aquest nou poder se us vagi al cap.) Podeu executar aquesta macro qualsevol nombre de vegades, encara que tendeix a perdre el seu atractiu després d'unes dotzenes de vegades.

Perquè consti, aquesta senzilla macro d'Excel utilitza els conceptes següents:

  • Definició d'un procediment Sub (la primera línia)
  • Assignació de valors a variables (Msg i Ans)
  • Concatenar (unir) una cadena (utilitzant l'operador &)
  • Ús d'una funció VBA integrada (MsgBox)
  • Ús de constants VBA integrades (vbYesNo, vbNo i vbYes)
  • Utilitzant una construcció If-Then (dues vegades)
  • Finalització d'un procediment Sub (l'última línia)

Utilitzant la gravadora de macros Excel VBA

Una altra manera d'introduir codi en un mòdul VBA és enregistrant les vostres accions mitjançant la gravadora de macros d'Excel.

Per cert, no hi ha cap manera de gravar el procediment GuessName que es mostra a dalt. Només podeu gravar les coses que podeu fer directament a Excel. Mostrar un quadre de missatge no és al repertori normal d'Excel. (És una cosa de VBA.) La gravadora de macros és útil, però en molts casos, probablement haureu d'introduir almenys algun codi manualment.

Aquí teniu un exemple pas a pas que mostra com gravar una macro que insereix un nou full de treball i amaga totes les files menys les deu primeres i totes menys les deu primeres columnes. Si voleu provar aquest exemple, comenceu amb un llibre d'Excel nou i en blanc i seguiu aquests passos:

Activa un full de treball al llibre de treball.

Qualsevol full de treball d'Excel servirà.

Feu clic a la pestanya Desenvolupador i assegureu-vos que Utilitza referències relatives no estigui ressaltat.

Aquesta macro s'enregistra mitjançant Referències absolutes.

Trieu Desenvolupador → Codi → Enregistra la macro o feu clic a la icona que hi ha al costat de l'indicador Preparat a l'extrem esquerre de la barra d'estat.

Excel mostra el seu quadre de diàleg Enregistrar macro.

Al quadre de diàleg Enregistrar macro, poseu un nom a la macro TenByTen, especifiqueu que voleu que la macro s'emmagatzemi en aquest llibre de treball i premeu Maj+T per a la tecla de drecera.

La macro es pot executar quan premeu Ctrl+Maj+T.

Feu clic a D'acord per començar a gravar. Excel insereix automàticament un mòdul VBA nou al projecte que correspon al llibre de treball actiu.

A partir d'aquest moment, Excel converteix les vostres accions en codi VBA. Mentre enregistreu, la icona de la barra d'estat es converteix en un petit quadrat. Aquest és un recordatori que la gravadora de macros s'està executant. També podeu fer clic a aquesta icona per aturar la gravadora de macros.

Feu clic a la icona Full nou a la dreta de la pestanya de l'últim full.

L'Excel insereix un nou full de treball.

Seleccioneu tota la columna K (la 11a columna) i premeu Ctrl+Maj+fletxa dreta; a continuació, feu clic amb el botó dret a qualsevol columna seleccionada i trieu Amaga al menú de drecera.

Excel amaga totes les columnes seleccionades.

Seleccioneu tota la fila 11 i premeu Ctrl+Maj+fletxa avall; a continuació, feu clic amb el botó dret a qualsevol fila seleccionada i trieu Amaga al menú de drecera.

Excel amaga totes les columnes seleccionades.

Seleccioneu la cel·la A1.

Trieu Desenvolupador → Codi → Atura la gravació o feu clic al botó Atura la gravació de la barra d'estat (el quadrat petit). Excel deixa d'enregistrar les teves accions.

Per veure aquesta macro recentment gravada, premeu Alt+F11 per activar el VBE. Localitzeu el nom del llibre de treball a la finestra del projecte. Veu que el projecte té un mòdul nou llistat. El nom del mòdul depèn de si teníeu altres mòduls al llibre de treball quan vau començar a gravar la macro. Si no ho heu fet, el mòdul s'anomena Mòdul1. Podeu fer doble clic al mòdul per veure la finestra Codi del mòdul.

Aquí teniu el codi generat per les vostres accions:

Sub TenByTen()
'
' Macro TenByTen
'
' Drecera de teclat: Ctrl+Maj+T
'
  Sheets.Add After:=ActiveSheet
  Columnes ("K:K").Seleccioneu
  Interval(Selecció, Selecció.Final(xlA la dreta)).Seleccioneu
  Selection.EntireColumn.Hidden = Veritable
  Files ("11:11").Seleccioneu
  Interval(Selecció, Selecció.Final(xlAvall)).Seleccioneu
  Selection.EntireRow.Hidden = Veritable
  Interval("A1").Seleccioneu
End Sub

Per provar aquesta macro, activeu qualsevol full de treball i premeu la tecla de drecera que heu assignat al pas 4: Ctrl+Maj+T.

Si no heu assignat una tecla de drecera a la macro, no us preocupeu. A continuació s'explica com mostrar una llista de totes les macros disponibles i executar la que vulgueu:

Trieu Desenvolupador → Codi → Macros. Els aficionats al teclat poden prémer Alt+F8.

Qualsevol d'aquests mètodes mostra un quadre de diàleg que enumera totes les macros disponibles.

Seleccioneu la macro a la llista (en aquest cas, TenByTen).

Feu clic al botó Executar.

Excel executa la macro i obteniu un nou full de treball amb deu files visibles i deu columnes visibles.

Podeu executar qualsevol nombre d'ordres i realitzar qualsevol nombre d'accions mentre la gravadora de macros s'està executant. Excel tradueix degudament les accions i les pulsacions del ratolí al codi VBA.

I, per descomptat, també podeu editar la macro després de gravar-la. Per provar les teves noves habilitats, prova d'editar la macro perquè insereixi un full de treball amb nou files i columnes visibles, perfecte per a un trencaclosques de Sudoku.

S'està copiant el codi VBA

El mètode final per introduir codi en un mòdul VBA és copiar-lo des d'un altre mòdul o des d'un altre lloc (com ara un lloc web). Per exemple, un procediment de sub o funció que escriviu per a un projecte també pot ser útil en un altre projecte. En lloc de perdre el temps tornant a introduir el codi, podeu activar el mòdul i utilitzar els procediments normals de copiar i enganxar del Porta-retalls. (Probablement us agradin les tecles de drecera Ctrl+C per copiar i Ctrl+V per enganxar.) Després d'enganxar el codi en un mòdul VBA, podeu modificar-lo si cal.

Per cert, trobareu molts exemples de codi VBA al web. Si els voleu provar, seleccioneu el codi al vostre navegador i premeu Ctrl+C per copiar-lo. A continuació, activeu un mòdul i premeu Ctrl+V per enganxar-lo.

Quan copieu codi d'un lloc web, de vegades requereix una mica de correcció. Per exemple, els caràcters de cometes poden ser "cometes intel·ligents" i s'han de convertir en caràcters de cometes simples. I de vegades, les llargues línies s'emboliquen. Les declaracions errònies són fàcils de detectar al VBE perquè apareixen en vermell.


Com bloquejar Microsoft Word dobrir fitxers en mode només de lectura a Windows

Com bloquejar Microsoft Word dobrir fitxers en mode només de lectura a Windows

Com bloquejar Microsoft Word d'obrir fitxers en mode de només lectura a Windows Microsoft Word obre fitxers en mode de només lectura, cosa que fa que sigui impossible editar-los? No us preocupeu, els mètodes es mostren a continuació

Com solucionar la impressió incorrecta de documents de Microsoft Word

Com solucionar la impressió incorrecta de documents de Microsoft Word

Com corregir errors en imprimir documents incorrectes de Microsoft Word Els errors en imprimir documents de Word amb tipus de lletra canviats, paràgrafs desordenats, falta de text o contingut perdut són força habituals. No obstant això, no

Esborra els dibuixos de llapis i ressaltats a les teves diapositives de PowerPoint

Esborra els dibuixos de llapis i ressaltats a les teves diapositives de PowerPoint

Si heu utilitzat el llapis o el marcador per dibuixar a les vostres diapositives de PowerPoint durant una presentació, podeu desar els dibuixos per a la següent presentació o esborrar-los de manera que la propera vegada que el mostreu, començareu amb diapositives de PowerPoint netes. Seguiu aquestes instruccions per esborrar dibuixos a llapis i ressaltadors: Esborrant línies una a […]

Contingut de la biblioteca destils a SharePoint 2010

Contingut de la biblioteca destils a SharePoint 2010

La biblioteca d'estils conté fitxers CSS, fitxers de llenguatge de full d'estil extensible (XSL) i imatges utilitzades per pàgines mestres predefinides, dissenys de pàgina i controls a SharePoint 2010. Per localitzar fitxers CSS a la biblioteca d'estils d'un lloc de publicació: Trieu Accions del lloc→Visualitza Tot el contingut del lloc. Apareix el contingut del lloc. La biblioteca d'estil es troba a […]

Formateu els números en milers i milions als informes dExcel

Formateu els números en milers i milions als informes dExcel

No desbordeu el vostre públic amb números gigantesques. A Microsoft Excel, podeu millorar la llegibilitat dels vostres taulers i informes formatant els vostres números perquè apareguin en milers o milions.

Com compartir i seguir els llocs de SharePoint

Com compartir i seguir els llocs de SharePoint

Apreneu a utilitzar les eines de xarxes socials de SharePoints que permeten a persones i grups comunicar-se, col·laborar, compartir i connectar-se.

Com convertir les dates a formats Julian a Excel

Com convertir les dates a formats Julian a Excel

Les dates julianes s'utilitzen sovint en entorns de fabricació com a marca de temps i referència ràpida per a un número de lot. Aquest tipus de codificació de dates permet als minoristes, consumidors i agents de serveis identificar quan es va fabricar un producte i, per tant, l'antiguitat del producte. Les dates julianes també s'utilitzen en programació, militars i astronomia. Diferents […]

Com crear una aplicació web daccés

Com crear una aplicació web daccés

Podeu crear una aplicació web a Access 2016. Què és, de totes maneres, una aplicació web? Bé, web vol dir que està en línia i l'aplicació és només una abreviatura de "aplicació". Una aplicació web personalitzada és una aplicació de base de dades en línia a la qual s'accedeix des del núvol mitjançant un navegador. Creeu i manteniu l'aplicació web a la versió d'escriptori […]

Barra dinici ràpid a SharePoint 2010

Barra dinici ràpid a SharePoint 2010

La majoria de les pàgines del SharePoint 2010 mostren una llista d'enllaços de navegació a la barra d'inici ràpid al costat esquerre de la pàgina. La barra d'inici ràpid mostra enllaços al contingut del lloc destacat, com ara llistes, biblioteques, llocs i pàgines de publicació. La barra d'inici ràpid inclou dos enllaços molt importants: Enllaç de tot el contingut del lloc: el […]

Què signifiquen els missatges derror del solucionador a Excel?

Què signifiquen els missatges derror del solucionador a Excel?

Per a problemes senzills, Solver a Excel sol trobar ràpidament els valors òptims de la variable Solver per a la funció objectiu. Però, en alguns casos, Solver té problemes per trobar els valors de la variable Solver que optimitzen la funció objectiu. En aquests casos, Solver normalment mostra un missatge o un missatge d'error que descriu o discuteix el problema que […]