Anomenament de subs i funcions dExcel VBA

Igual que els humans, les mascotes i els huracans, cada procediment de sub i funció d'Excel VBA ha de tenir un nom. Tot i que és perfectament acceptable anomenar al vostre gos Hairball Harris, normalment no és una bona idea utilitzar una actitud tan lliure a l'hora de nomenar procediments Excl VBA. Quan anomeneu els procediments d'Excel VBA, heu de seguir unes quantes regles:

  • Podeu utilitzar lletres, números i alguns caràcters de puntuació, però el primer caràcter ha de ser una lletra.
  • No podeu utilitzar espais ni punts al nom.
  • VBA no distingeix entre majúscules i minúscules.
  • No podeu utilitzar cap dels caràcters següents en un nom de procediment: #, $, %, &, @, ^, * o !. En altres paraules, el nom del vostre procediment no pot semblar paraules de maledicció d'una tira còmica.
  • Si escriviu un procediment de funció per utilitzar-lo en una fórmula, eviteu utilitzar un nom que sembli una adreça de cel·la (per exemple, A1 o B52). De fet, Excel permet aquests noms de funcions, però per què fer que les coses siguin més confuses del que ja ho són?
  • Els noms dels procediments no poden tenir més de 255 caràcters. (Per descomptat, mai no faries un nom de procediment tan llarg.)

Idealment, el nom d'un procediment descriu el propòsit de la rutina. Una bona pràctica és crear un nom combinant un verb i un substantiu, per exemple, ProcessData, PrintReport, Sort_Array o CheckFilename.

Alguns programadors prefereixen utilitzar noms semblants a frases que proporcionen una descripció completa del procediment. Alguns exemples inclouen WriteReportToTextFile i Get_Print_Options_and_Print_Report. L'ús de noms tan llargs té pros i contres. D'una banda, aquests noms són descriptius i solen ser inequívocs. D'altra banda, triguen més a escriure. Tothom desenvolupa un estil de denominació, però si la vostra macro no és només una macro temporal ràpida i bruta, és una bona idea ser descriptiu i evitar noms sense sentit com ara DoIt, Update, Fix i la sempre popular Macro1.

Execució de procediments Excel VBA Sub

Encara que potser no sabeu gaire sobre el desenvolupament de procediments Sub en aquest moment, és important saber com executar aquests procediments. Un procediment Sub no té valor tret que sàpigues com executar-lo.

Per cert, executar un procediment Sub significa el mateix que executar o cridar un procediment Sub. Podeu utilitzar la terminologia que vulgueu.

Podeu executar un sub VBA de moltes maneres; aquesta és una de les raons per les quals podeu fer tantes coses útils amb els procediments Sub. Aquí hi ha una llista exhaustiva de les maneres d'executar un procediment Sub:

  • Trieu Executar → Executar sub/Formulari d'usuari (al VBE). Excel executa el procediment Sub en el qual es troba el cursor. Aquesta ordre de menú té dues alternatives: la tecla F5 i el botó Executar sub/Formulari d'usuari a la barra d'eines Estàndard del VBE. Aquests mètodes no funcionen si el procediment requereix un o més arguments.
  • Utilitzeu el quadre de diàleg Macro d'Excel. Obriu aquest quadre escollint Desenvolupador → Codi → Macros o escollint Visualització → Macros → Macros. O ometeu la cinta i premeu Alt+F8. Quan aparegui el quadre de diàleg Macro, seleccioneu el procediment secundari que vulgueu i feu clic a Executar. Aquest quadre de diàleg enumera només els procediments que no requereixen cap argument.
  • Premeu Ctrl+tecla (o Ctrl+Maj+tecla) assignada al procediment Sub (suposant que n'heu assignat un).
  • Feu clic a un botó o una forma d'un full de treball. El botó o la forma ha de tenir assignat un procediment Sub, que és molt fàcil de fer.
  • Des d'un altre procediment Sub que escriviu.
  • Feu clic a un botó que hàgiu afegit a la barra d'eines Accés ràpid.
  • Des d'un element personalitzat que heu afegit a la cinta.
  • Quan es produeix un esdeveniment. Aquests esdeveniments inclouen obrir el llibre de treball, tancar el llibre de treball, desar el llibre de treball, fer un canvi a una cel·la, activar un full i altres coses.
  • Des de la finestra Immediata del VBE. Simplement escriviu el nom del procediment Sub i premeu Intro.

Algunes d'aquestes tècniques es comenten a continuació. Per seguir, heu d'introduir un procediment secundari en un mòdul VBA:

Comenceu amb un nou llibre de treball.

Premeu Alt+F11 per activar el VBE.

Seleccioneu el llibre de treball a la finestra Projecte.

Seleccioneu Insereix → Mòdul per inserir un mòdul nou.

Introduïu el següent al mòdul:

Sub ShowCubeRoot()
  Num = InputBox("Introdueix un nombre positiu")
  MsgBox Num ^ (1/3) & "és l'arrel cúbica."
End Sub

Aquest procediment demana a l'usuari un número i després mostra l'arrel cúbica d'aquest número en un quadre de missatge. Aquestes imatges mostren què passa quan executeu aquest procediment.

Anomenament de subs i funcions d'Excel VBA

Utilitzant la funció VBA InputBox integrada per obtenir un número.

També podeu veure què passa a través de la funció MsgBox aquí.

Anomenament de subs i funcions d'Excel VBA

Mostra l'arrel cúbica d'un nombre mitjançant la funció MsgBox.

Per cert, ShowCubeRoot no és un exemple de bona macro. No comprova si hi ha errors, de manera que falla fàcilment. Proveu de fer clic al botó Cancel·la al quadre d'entrada o introduïu un número negatiu. Qualsevol acció dóna lloc a un missatge d'error.

Executant directament el procediment de sub Excel VBA

Una manera d'executar aquest procediment és fent-ho directament des del mòdul VBA en què l'heu definit. Seguiu aquests passos:

Activeu el VBE i seleccioneu el mòdul VBA que conté el procediment.

Mou el cursor a qualsevol lloc del codi del procediment.

Premeu F5 (o trieu Executar → Executar sub/Formulari d'usuari).

Respon al quadre d'entrada i fes clic a D'acord.

El procediment mostra l'arrel cúbica del número que heu introduït.

No podeu utilitzar Executar → Executar Sub/Formulari d'usuari per executar un procediment Sub que utilitzi arguments, perquè no teniu cap manera de passar els arguments al procediment. Si el procediment conté un o més arguments, l'única manera d'executar-lo és cridar-lo des d'un altre procediment, que ha de proporcionar els arguments.

Executant el procediment des del quadre de diàleg Macro d'Excel

La majoria de les vegades, executeu procediments sub des d'Excel, no des del VBE. Els passos següents descriuen com executar una macro mitjançant el quadre de diàleg Macro d'Excel:

Si esteu treballant al VBE, activeu Excel.
Prement Alt+F11 és la ruta ràpida.

Trieu Desenvolupador → Codi → Macros (o premeu Alt+F8).
Excel mostra el quadre de diàleg que es mostra aquí.Anomenament de subs i funcions d'Excel VBA

El quadre de diàleg Macro enumera tots els procediments secundaris disponibles.

Seleccioneu la macro.

Feu clic a Executar (o feu doble clic al nom de la macro al quadre de llista).

El quadre de diàleg Macro no mostra els procediments secundaris que utilitzen arguments. Això és perquè no hi ha manera d'especificar els arguments.

Execució d'una macro VBA d'Excel mitjançant una tecla de drecera

Una altra manera d'executar una macro és prémer la seva tecla de drecera. Però abans de poder utilitzar aquest mètode, heu d'assignar una tecla de drecera a la macro.

Teniu l'oportunitat d'assignar una tecla de drecera al quadre de diàleg Enregistrar macro quan comenceu a gravar una macro . Si creeu el procediment sense utilitzar la gravadora de macros, podeu assignar una tecla de drecera (o canviar una tecla de drecera existent) seguint els passos següents:

Trieu Desenvolupador → Codi → Macros.

Seleccioneu el nom del sub procediment del quadre de llista.

En aquest exemple, el procediment s'anomena ShowCubeRoot.

Feu clic al botó Opcions.
Excel mostra el quadre de diàleg Opcions de macro que es mostra aquí.Anomenament de subs i funcions d'Excel VBA

El quadre de diàleg Opcions de macro us permet definir opcions per a les vostres macros.

Feu clic a l'opció Tecla de drecera i introduïu una lletra al quadre amb l'etiqueta Ctrl.

La lletra que introduïu correspon a la combinació de tecles que voleu utilitzar per executar la macro. Per exemple, si introduïu la lletra c minúscula , podeu executar la macro prement Ctrl+C. Si introduïu una lletra majúscula, haureu d'afegir la tecla Maj a la combinació de tecles. Per exemple, si introduïu C, podeu executar la macro prement Ctrl+Maj+C.

Feu clic a D'acord per tancar el quadre de diàleg Opcions de macro i, a continuació, feu clic a Cancel·la per tancar el quadre de diàleg de macro.
Després d'haver assignat una tecla de drecera, podeu prémer aquesta combinació de tecles per executar la macro. Una tecla de drecera no funciona si està assignada a una macro que utilitza un argument.

Les tecles de drecera que assigneu a les macros anul·len les tecles de drecera integrades d'Excel. Per exemple, Ctrl+C és la tecla de drecera estàndard per copiar dades. Si assigneu Ctrl+C a una macro, no podeu utilitzar Ctrl+C per copiar. Això no sol ser un gran problema perquè Excel gairebé sempre ofereix altres maneres d'executar ordres.

Execució del procediment Excel VBA des d'un botó o forma

De vegades, us pot agradar la idea d'assignar la macro a un botó (o qualsevol altra forma) en un full de treball. Per assignar la macro d'Excel a un botó, seguiu aquests passos:

Activa un full de treball.

Afegiu un botó del grup Controls de formulari.
Per mostrar el grup Controls de formulari, seleccioneu Desenvolupador → Controls → Insereix.Anomenament de subs i funcions d'Excel VBA

La cinta, que mostra els controls disponibles quan feu clic a Insereix a la pestanya Desenvolupador.

Feu clic a l'eina Botó al grup Controls de formulari.

És el primer botó de la primera fila de controls.

Arrossegueu el full de treball per crear el botó.
Després d'afegir el botó al full de treball, Excel llegeix la vostra ment i mostra el quadre de diàleg Assigna una macro que es mostra a continuació.Anomenament de subs i funcions d'Excel VBA

Quan afegiu un botó a un full de treball, Excel mostra automàticament el quadre de diàleg Assigna una macro.

Seleccioneu la macro que voleu assignar al botó.

Feu clic a D'acord.

Després d'haver fet la tasca, fer clic al botó executa la macro, com per màgia.

Quan afegiu un botó, tingueu en compte que el quadre desplegable mostra dos conjunts de controls: controls de formulari i controls ActiveX. Aquests dos grups de controls semblen semblants, però en realitat són molt diferents. A la pràctica, els controls de formulari són més fàcils d'utilitzar.

També podeu assignar una macro a qualsevol altra forma o objecte. Per exemple, suposeu que voleu executar una macro quan l'usuari faci clic en un objecte Rectangle. Seguiu aquests passos:

Afegiu el rectangle al full de treball.

Inseriu un rectangle escollint Insereix → Il·lustracions → Formes.

Feu clic amb el botó dret al rectangle.

Trieu Assigna una macro al menú de drecera.

Seleccioneu la macro al quadre de diàleg Assigna macro.

Feu clic a D'acord.
Després d'haver realitzat aquests passos, fent clic al rectangle s'executa la macro assignada.

Execució del procediment des d'un altre procediment d'Excel VBA

També podeu executar un procediment Excel VBA des d'un altre procediment. Seguiu aquests passos si voleu provar-ho:

Activeu el mòdul VBA que conté la rutina ShowCubeRoot.

Introduïu aquest nou procediment (ja sigui per sobre o per sota del codi ShowCubeRoot; no hi ha cap diferència):

Sub NewSub()
  Truqueu a ShowCubeRoot
End Sub

Un cop completat, només heu d'executar la macro NewSub.

La manera més senzilla de fer-ho és moure el cursor a qualsevol lloc del codi NewSub i prémer F5. Tingueu en compte que aquest procediment NewSub només executa el procediment ShowCubeRoot.

Per cert, la paraula clau Trucada és opcional. La instrucció només pot consistir en el nom del procediment Sub. Tanmateix, l'ús de la paraula clau Trucada deixa perfectament clar que s'està cridant un procediment.

Execució dels procediments de la funció Excel VBA

Les funcions, a diferència dels procediments Sub, només es poden executar de dues maneres:

  • En cridar la funció des d'un altre procediment Sub o procediment Function
  • Utilitzant la funció en una fórmula de full de treball

Proveu aquesta funció senzilla. Introduïu-lo en un mòdul VBA:

Funció CubeRoot (número)
  CubeRoot = nombre ^ (1/3)
Funció final

Aquesta funció és bastant debilitada; només calcula l'arrel cúbica del nombre que se li passa com a argument. Tanmateix, proporciona un punt de partida per entendre les funcions. També il·lustra un concepte important sobre les funcions: com retornar el valor. (Recordeu que una funció retorna un valor, oi?)

Observeu que l'única línia de codi que forma aquest procediment de funció realitza un càlcul. El resultat de les matemàtiques (nombre a la potència d'1⁄3) s'assigna a la variable CubeRoot. No per casualitat, CubeRoot també és el nom de la funció. Per dir-li a la funció quin valor ha de tornar, assigneu aquest valor al nom de la funció.

Crida a la funció Excel VBA des d'un procediment Sub

Com que no podeu executar una funció directament, heu de cridar-la des d'un altre procediment. Introduïu el següent procediment senzill al mateix mòdul VBA que conté la funció CubeRoot:

Sub CallerSub()
  Res = CubeRoot (125)
  MsgBox Ans
End Sub

Quan executeu el procediment CallerSub, Excel mostra un quadre de missatge que conté el valor de la variable Ans, que és 5.

Això és el que està passant: la funció CubeRoot s'executa i rep un argument de 125. El càlcul es realitza mitjançant el codi de la funció (utilitzant el valor passat com a argument) i el valor retornat de la funció s'assigna a la variable Ans. A continuació, la funció MsgBox mostra el valor de la variable Ans.

Proveu de canviar l'argument que s'ha passat a la funció CubeRoot i torneu a executar la macro CallerSub. Funciona tal com hauria de ser, suposant que doneu a la funció un argument vàlid (un nombre positiu).

Per cert, el procediment CallerSub es podria simplificar una mica. La variable Ans no és realment necessària tret que el vostre codi la faci servir més endavant. Podeu utilitzar aquesta declaració única per obtenir el mateix resultat:

MsgBox CubeRoot (125)

Crida a una funció VBA d'Excel des d'una fórmula de full de treball

Ara és el moment d'anomenar aquest procediment de funció VBA des d'una fórmula de full de treball. Activeu un full de treball al mateix llibre de treball que conté la definició de la funció CubeRoot. A continuació, introduïu la fórmula següent a qualsevol cel·la:

=Arrel cúbica (1728)

La cel·la mostra 12, que és de fet l'arrel cúbica de 1.728.

Com és d'esperar, podeu utilitzar una referència de cel·la com a argument per a la funció CubeRoot. Per exemple, si la cel·la A1 conté un valor, podeu introduir =CubeRoot(A1) . En aquest cas, la funció retorna el nombre obtingut calculant l'arrel cúbica del valor en A1.

Podeu utilitzar aquesta funció qualsevol nombre de vegades al full de treball. Igual que les funcions integrades d'Excel, les vostres funcions personalitzades apareixen al quadre de diàleg Insereix una funció. Feu clic al botó Insereix funció de la barra d'eines i trieu la categoria Definida per l'usuari. Com es mostra a continuació, el quadre de diàleg Insereix una funció enumera la vostra pròpia funció.

Anomenament de subs i funcions d'Excel VBA

La funció CubeRoot apareix a la categoria Definida per l'usuari del quadre de diàleg Insereix funció.

Si voleu que el quadre de diàleg Insereix una funció mostri una descripció de la funció, seguiu aquests passos:

Trieu Desenvolupador → Codi → Macros.
L'Excel mostra el quadre de diàleg Macro, però CubeRoot no apareix a la llista. (CubeRoot és un procediment de funció, i aquesta llista només mostra procediments secundaris.) No us preocupeu.

Escriviu la paraula CubeRoot al quadre Nom de la macro.

Feu clic al botó Opcions.

Introduïu una descripció de la funció al quadre Descripció.

Feu clic a D'acord per tancar el quadre de diàleg Opcions de macro.

Tanqueu el quadre de diàleg Macro fent clic al botó Cancel·la.
Aquest text descriptiu apareix ara al quadre de diàleg Insereix funció.

Aquesta imatge mostra la funció CubeRoot que s'utilitza a les fórmules del full de treball.

Anomenament de subs i funcions d'Excel VBA

Ús de la funció CubeRoot en fórmules.

A hores d'ara, és possible que les coses estiguin començant a unir-se per a tu.


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 […]