Procediments "FunciĆ³" i "Sub" a VBA

Funcions VBA integrades

Abans de comenƧar a crear les vostres prĆ²pies funcions VBA, Ć©s bo saber que Excel VBA tĆ© una rica colĀ·lecciĆ³ de funcions integrades preconstruĆÆdes que podeu utilitzar mentre escriviu el vostre codi.

Es pot veure una llista d'aquestes funcions a l'editor de VBA:

  • Obriu un llibre d'Excel i inicieu l'editor VBA (feu clic per fer-ho Alt + F11) i, a continuaciĆ³, premeu F2.
  • Seleccioneu una biblioteca de la llista desplegable a la part superior esquerra de la pantalla VBA.
  • ApareixerĆ  una llista de classes i funcions de VBA integrades. Feu clic al nom de la funciĆ³ per mostrar la seva breu descripciĆ³ a la part inferior de la finestra. pressionant F1 obrirĆ  la pĆ gina d'ajuda en lĆ­nia per a aquesta funciĆ³.

A mƩs, es pot trobar una llista completa de funcions VBA integrades amb exemples al Centre de desenvolupadors de Visual Basic.

Procediments personalitzats "FunciĆ³" i "Sub" a VBA

A Excel Visual Basic, un conjunt d'ordres que realitzen una tasca especĆ­fica es colĀ·loca en un procediment. function (FunciĆ³) o Sub (subrutina). La principal diferĆØncia entre els procediments function Šø Sub Ć©s aquest el procediment function retorna resultat, procediment Sub - no.

Per tant, si necessiteu realitzar accions i obtenir algun resultat (per exemple, sumar diversos nombres), normalment s'utilitza el procediment function, i per simplement realitzar algunes accions (per exemple, canviar el format d'un grup de celĀ·les), heu de seleccionar el procediment Sub.

Arguments

Es poden passar diverses dades als procediments VBA mitjanƧant arguments. La llista d'arguments s'especifica quan es declara un procediment. Per exemple, el procediment Sub a VBA afegeix l'enter donat (Enter) a cada celĀ·la de l'interval seleccionat. Podeu passar aquest nĆŗmero al procediment mitjanƧant un argument, com aquest:

Sub AddToCells(i As Integer) ... End Sub

Tingueu en compte que tenir arguments per als procediments function Šø Sub en VBA Ć©s opcional. Alguns procediments no requereixen arguments.

Arguments opcionals

Els procediments VBA poden tenir arguments opcionals. SĆ³n arguments que l'usuari pot especificar si vol, i si s'ometen, el procediment utilitza els valors per defecte per a ells.

Tornant a l'exemple anterior, per fer que un argument enter a una funciĆ³ sigui opcional, es declararia aixĆ­:

Sub AddToCells (Opcional i com a enter = 0)

En aquest cas, l'argument sencer i el valor per defecte serĆ  0.

Hi pot haver diversos arguments opcionals en un procediment, tots ells llistats al final de la llista d'arguments.

Passar arguments per valor i per referĆØncia

Els arguments en VBA es poden passar a un procediment de dues maneres:

  • Per Val ā€“ passar un argument per valor. AixĆ² vol dir que nomĆ©s el valor (Ć©s a dir, una cĆ²pia de l'argument) es passa al procediment i, per tant, qualsevol canvi fet a l'argument dins del procediment es perdrĆ  quan el procediment surti.
  • PerRef ā€“ passar un argument per referĆØncia. Ɖs a dir, l'adreƧa real de la ubicaciĆ³ de l'argument a la memĆ²ria es passa al procediment. Qualsevol canvi fet a un argument dins del procediment es desarĆ  quan el procediment s'acabi.

ƚs de paraules clau Per Val or PerRef a la declaraciĆ³ del procediment, podeu especificar com es passa l'argument al procediment. AixĆ² es mostra als exemples segĆ¼ents:

Sub AddToCells(ByVal i As Integer) ... End Sub
En aquest cas, l'argument sencer i passat per valor. DesprƩs de sortir del trƠmit Sub tot fet amb i els canvis es perdran.
Sub AddToCells(ByRef i As Integer) ... End Sub
En aquest cas, l'argument sencer i passat per referĆØncia. DesprĆ©s de sortir del trĆ mit Sub tot fet amb i els canvis s'emmagatzemaran a la variable que s'ha passat al procediment Sub.

Recordeu que els arguments a VBA es passen per referĆØncia per defecte. En altres paraules, si no s'utilitzen paraules clau Per Val or PerRef, llavors l'argument es passarĆ  per referĆØncia.

Abans de procedir amb els trĆ mits function Šø Sub amb mĆ©s detall, serĆ  Ćŗtil fer una altra mirada a les caracterĆ­stiques i diferĆØncies entre aquests dos tipus de procediments. A continuaciĆ³ es mostren breus debats sobre els procediments de VBA function Šø Sub i es mostren exemples senzills.

Procediment VBA Ā«FunciĆ³Ā»

L'editor de VBA reconeix el procediment functionquan troba un grup d'ordres inclĆ²s entre les segĆ¼ents sentĆØncies d'obertura i tancament:

FunciĆ³... FunciĆ³ final

Com s'ha esmentat anteriorment, el procediment function en VBA (a diferĆØncia de Sub) retorna un valor. Les regles segĆ¼ents s'apliquen als valors de retorn:

  • El tipus de dades del valor retornat s'ha de declarar a la capƧalera del procediment function.
  • La variable que contĆ© el valor de retorn s'ha de denominar igual que el procediment function. No cal declarar aquesta variable per separat, ja que sempre existeix com a part integrant del procediment. function.

AixĆ² estĆ  ben ilĀ·lustrat en l'exemple segĆ¼ent.

Exemple de funciĆ³ VBA: realitzaciĆ³ d'una operaciĆ³ matemĆ tica sobre 3 nombres

El segĆ¼ent Ć©s un exemple de codi de procediment VBA function, que pren tres arguments de tipus Feu doble (nombres de coma flotant de doble precisiĆ³). Com a resultat, el procediment retorna un altre nĆŗmero de tipus Feu dobleigual a la suma dels dos primers arguments menys el tercer argument:

FunciĆ³ SumMinus(dNum1 Com a doble, dNum2 Com a doble, dNum3 Com a doble) Com a doble SumMinus = dNum1 + dNum2 - dNum3 FunciĆ³ final

Aquest procediment VBA molt senzill function ilĀ·lustra com les dades es passen a un procediment mitjanƧant arguments. Podeu veure que el tipus de dades que retorna el procediment es defineix com Feu doble (diuen les paraules Com a Doble desprĆ©s de la llista d'arguments). Aquest exemple tambĆ© mostra com el resultat del procediment function emmagatzemat en una variable amb el mateix nom que el nom del procediment.

Cridar el procediment VBA "FunciĆ³"

Si el procediment anterior es senzill function inserit en un mĆ²dul de l'editor de Visual Basic, es pot cridar des d'altres procediments VBA o utilitzar-lo en un full de treball d'un llibre d'Excel.

Truqueu al procediment VBA "FunciĆ³" des d'un altre procediment

Procediment function es pot cridar des d'un altre procediment VBA simplement assignant aquest procediment a una variable. L'exemple segĆ¼ent mostra una trucada a un procediment Summinus, que es va definir anteriorment.

Sub main() Dim total com Doble total = SumMinus(5, 4, 3) End Sub

Truqueu al procediment VBA "FunciĆ³" des d'un full de treball

Procediment VBA function es pot cridar des d'un full de treball d'Excel de la mateixa manera que qualsevol altra funciĆ³ d'Excel integrada. Per tant, el procediment creat a l'exemple anterior function - Summinus es pot cridar introduint l'expressiĆ³ segĆ¼ent a una celĀ·la del full de treball:

=SumMinus(10, 5, 2)

Procediment VBA Ā«SubĀ»

L'editor de VBA entĆ©n que hi ha un procediment al davant Subquan troba un grup d'ordres inclĆ²s entre les segĆ¼ents sentĆØncies d'obertura i tancament:

Sub ... Final Sub

Procediment de VBA "Sub": Exemple 1. L'alineaciĆ³ del centre i el canvi de mida del tipus de lletra en un interval de celĀ·les seleccionat

Considereu un exemple d'un procediment VBA senzill Sub, la tasca del qual Ć©s canviar el format de l'interval de celĀ·les seleccionat. Les celĀ·les es centren (tant verticalment com horitzontalment) i la mida del tipus de lletra es canvia a l'especificada per l'usuari:

Sub Format_Centered_And_Sized (iFontSize opcional com a nombre enter = 10) Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize End Sub

Aquest procediment Sub realitza accions perĆ² no retorna cap resultat.

Aquest exemple tambĆ© utilitza un argument opcional Mida de la font. Si l'argument Mida de la font no s'ha passat a trĆ mit Sub, aleshores el seu valor per defecte Ć©s 10. Tanmateix, si l'argument Mida de la font passat a trĆ mit Sub, aleshores l'interval de celĀ·les seleccionat s'establirĆ  amb la mida de lletra especificada per l'usuari.

Subprocediment de VBA: Exemple 2: AlineaciĆ³ al centre i font en negreta a l'interval de celĀ·les seleccionat

El procediment segĆ¼ent Ć©s similar al que acabem de comentar, perĆ² aquesta vegada, en lloc de canviar la mida, aplica un estil de lletra en negreta a l'interval de celĀ·les seleccionat. Aquest Ć©s un exemple de procediment Sub, que no pren arguments:

Sub Format_Centered_And_Bold() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = True End Sub

Crida al procediment "Sub" a Excel VBA

Truqueu al procediment VBA "Sub" des d'un altre procediment

Per trucar a un procediment VBA Sub des d'un altre procediment VBA, heu d'escriure la paraula clau Trucar, nom del procediment Sub i mĆ©s enllĆ  entre parĆØntesis hi ha els arguments del procediment. AixĆ² es mostra a l'exemple segĆ¼ent:

Sub main() Call Format_Centered_And_Sized(20) End Sub

Si el procediment Format_centrat_i_mida tĆ© mĆ©s d'un argument, s'han de separar per comes. Com aixĆ²:

Sub main() Call Format_Centered_And_Sized (arg1, arg2, ...) End Sub

Truqueu al procediment de VBA "Sub" des del full de treball

Procediment Sub no es pot introduir directament en una celĀ·la de full d'Excel, com es pot fer amb un procediment functionperquĆØ el procediment Sub no retorna un valor. Tanmateix, procediments Sub, que no tenen arguments i es declaren com PĆŗblic (com es mostra a continuaciĆ³) estarĆ  disponible per als usuaris del full de treball. Per tant, si els procediments senzills comentats anteriorment Sub inserit en un mĆ²dul del Visual Basic Editor, el procediment Format_Centrat_I_Negreta estarĆ  disponible per utilitzar-lo en un full de treball Excel i el procediment Format_centrat_i_mida ā€“ no estarĆ  disponible perquĆØ tĆ© arguments.

AquĆ­ hi ha una manera senzilla d'executar (o executar) un procediment Sub, accessible des del full de treball:

  • Premsa Alt + F8 (prem la tecla Alt i mentre el manteniu premuda, premeu la tecla F8).
  • A la llista de macros que apareix, seleccioneu la que voleu executar.
  • Premsa Correr (correr)

Per realitzar un procediment Sub de manera rĆ pida i senzilla, podeu assignar-li una drecera de teclat. Per aixĆ²:

  • Premsa Alt + F8.
  • A la llista de macros que apareix, seleccioneu la que voleu assignar una drecera de teclat.
  • Premsa ParĆ metres (Opcions) i al quadre de diĆ leg que apareix, introduĆÆu la drecera del teclat.
  • Premsa OK i tanqueu el diĆ leg Macro (Macro).

AtenciĆ³: Quan assigneu una drecera de teclat a una macro, assegureu-vos que no s'utilitza com a estĆ ndard a Excel (per exemple, Ctrl + C). Si seleccioneu una drecera de teclat ja existent, es reassignarĆ  a la macro i, com a resultat, l'usuari pot iniciar la macro per accident.

ƀmbit del procediment VBA

La segona part d'aquest tutorial va analitzar l'abast de les variables i constants i el paper de les paraules clau. PĆŗblic Šø Privat. Aquestes paraules clau tambĆ© es poden utilitzar amb procediments VBA:

Public Sub AddToCells(i As Integer) ... End Sub
Si la declaraciĆ³ del procediment va precedida per la paraula clau PĆŗblic, aleshores el procediment estarĆ  disponible per a tots els mĆ²duls d'aquest projecte VBA.
Private Sub AddToCells(i As Integer) ... End Sub
Si la declaraciĆ³ del procediment va precedida per la paraula clau Privat, aquest procediment nomĆ©s estarĆ  disponible per al mĆ²dul actual. No es pot cridar a cap altre mĆ²dul ni des d'un llibre d'Excel.

Recordeu que si abans de declarar un procediment VBA function or Sub la paraula clau no s'insereix, la propietat predeterminada s'estableix per al procediment PĆŗblic (Ć©s a dir, estarĆ  disponible a tot arreu en aquest projecte VBA). AixĆ² contrasta amb les declaracions de variables, que sĆ³n per defecte Privat.

Sortida anticipada dels procediments VBA "FunciĆ³" i "Sub"

Si necessiteu finalitzar l'execuciĆ³ d'un procediment VBA function or Sub, sense esperar el seu final natural, doncs per aixĆ² hi ha operadors FunciĆ³ de sortida Šø Surt del sub. L'Ćŗs d'aquests operadors es mostra a continuaciĆ³ utilitzant un procediment senzill com a exemple. functionA que espera rebre un argument positiu per realitzar mĆ©s operacions. Si es passa un valor no positiu al procediment, no es poden realitzar mĆ©s operacions, de manera que s'hauria de mostrar un missatge d'error a l'usuari i el procediment hauria de sortir immediatament:

FunciĆ³ VAT_Amount(sVAT_Rate As Single) As Single VAT_Amount = 0 If sVAT_Rate <= 0 Then MsgBox "Esperava un valor positiu de sVAT_Rate perĆ² rebut" i sVAT_Rate FunciĆ³ de sortida Final si... FinalitzaciĆ³ de la funciĆ³

Tingueu en compte que abans de completar el trĆ mit function - Import_IVA, s'insereix una funciĆ³ VBA integrada al codi MsgBox, que mostra una finestra emergent d'avĆ­s a l'usuari.

Deixa un comentari