Procedure "Function" è "Sub" in VBA

Funzioni VBA integrate

Prima di inizià a creazione di e vostre funzioni VBA, hè bonu per sapè chì Excel VBA hà una ricca cullizzioni di funzioni integrate prebuilt chì pudete aduprà mentre scrive u vostru codice.

Una lista di sti funzioni pò esse vistu in l'editore VBA:

  • Aprite un libru di Excel è lanciate l'editore VBA (cliccate per fà questu Alt + F11), è dopu appughjà F2.
  • Selezziunate una biblioteca da u listinu drop-down in u cima manca di u screnu VBA.
  • Una lista di classi è funzioni VBA integrate appariscerà. Cliccate nantu à u nome di a funzione per vede a so breve descrizzione in u fondu di a finestra. pressendu F1 aprirà a pagina d'aiutu in linea per quella funzione.

Inoltre, una lista completa di funzioni VBA integrate cù esempi pò esse truvata in u Visual Basic Developer Center.

Prucedure persunalizate "Funzione" è "Sub" in VBA

In Excel Visual Basic, un inseme di cumandamenti chì facenu un compitu specificu hè postu in una prucedura. funzioni (Funzione) o Sub (Subroutine). A principal diferenza trà i prucessi funzioni и Sub hè chì a prucedura funzioni ritorna risultatu, prucedura Sub - micca.

Dunque, s'ellu ci vole à fà l'azzioni è uttene qualchì risultatu (per esempiu, somma parechji numeri), a prucedura hè generalmente utilizata. funzioni, è per fà simpricimenti alcune azzioni (per esempiu, cambià u furmatu di un gruppu di cellule), avete bisognu di selezziunà a prucedura Sub.

Argumintazzioni

Diversi dati ponu esse passati à i prucessi VBA usendu argumenti. A lista di l'argumenti hè specificatu quandu si dichjarà una prucedura. Per esempiu, a prucedura Sub in VBA aghjunghjenu l'integer datu (Integer) à ogni cellula in u intervallu sceltu. Pudete passà stu numeru à a prucedura usendu un argumentu, cum'è questu:

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

Tenite in mente chì avè argumenti per i prucessi funzioni и Sub in VBA hè opzionale. Certi prucedure ùn anu micca bisognu di argumenti.

Argumenti opzionali

I prucedure VBA ponu avè argumenti opzionali. Quessi sò argumenti chì l'utilizatore pò specificà s'ellu vole, è se sò omessi, a prucedura usa i valori predeterminati per elli.

Riturnendu à l'esempiu precedente, per fà un argumentu interu à una funzione facultativa, seria dichjarata cusì:

Sub AddToCells (Opzionale i As Integer = 0)

In questu casu, l'argumentu interu i u default serà 0.

Ci ponu esse parechji argumenti facultativu in una prucedura, tutti chì sò listati à a fine di a lista di l'argumenti.

Passendu argumenti per valore è per riferimentu

L'argumenti in VBA ponu esse passati à una prucedura in duie manere:

  • Per Val - passà un argumentu per valore. Questu significa chì solu u valore (vale à dì, una copia di l'argumentu) hè passatu à a prucedura, è per quessa ogni cambiamentu fattu à l'argumentu in a prucedura serà persu quandu a prucedura esce.
  • By Ref - passà un argumentu per riferimentu. Questu hè, l'indirizzu propiu di u locu di l'argumentu in memoria hè passatu à a prucedura. Ogni mudificazione fatta à un argumentu in a prucedura serà salvata quandu a prucedura esce.

Utilizà e parolle chjave Per Val or By Ref in a dichjarazione di prucedura, pudete specificà cumu l'argumentu hè passatu à a prucedura. Questu hè mostratu in l'esempii sottu:

Sub AddToCells (ByVal i As Integer) ... End Sub
In questu casu, l'argumentu interu i passatu per valore. Dopu à abbandunà a prucedura Sub tuttu fattu cun i i cambiamenti seranu persi.
Sub AddToCells (ByRef i As Integer) ... End Sub
In questu casu, l'argumentu interu i passatu per riferimentu. Dopu à abbandunà a prucedura Sub tuttu fattu cun i i cambiamenti seranu guardati in a variàbile chì hè stata passata à a prucedura Sub.

Ricurdativi chì l'argumenti in VBA sò passati per riferimentu per automaticamente. In altre parolle, se e parolle chjave ùn sò micca usate Per Val or By Ref, allura l'argumentu serà passatu per riferimentu.

Prima di prucede cù i prucessi funzioni и Sub in più detail, serà utile per piglià un altru sguardu à e caratteristiche è e diffirenzii trà sti dui tipi di prucedure. I seguenti sò brevi discussioni di e prucedure VBA funzioni и Sub è esempi simplici sò mostrati.

Procedura VBA "Funzione"

L'editore VBA ricunnosce a prucedura funzioniquandu scontra un gruppu di cumandamenti chjusu trà e seguenti dichjarazioni di apertura è di chiusura:

Funzione ... End Function

Comu dissi prima, a prucedura funzioni in VBA (à u cuntrariu di Sub) torna un valore. E regule seguenti s'applicanu à i valori di ritornu:

  • U tipu di dati di u valore di ritornu deve esse dichjaratu in l'intestazione di a prucedura funzioni.
  • A variàbile chì cuntene u valore di ritornu deve esse chjamatu u listessu cum'è a prucedura funzioni. Sta variàbile ùn deve esse dichjarata separatamente, postu chì sempre esiste cum'è una parte integrante di a prucedura. funzioni.

Questu hè ben illustratu in l'esempiu seguente.

Esempiu di Funzione VBA: Realizà una Operazione Matematica nantu à 3 Numeri

U seguitu hè un esempiu di un codice di prucedura VBA funzioni, chì piglia trè argumenti di tipu doppia (numeri in virgola flottante di doppia precisione). In u risultatu, a prucedura torna un altru numeru di tipu doppiauguale à a somma di i primi dui argumenti minus u terzu argumentu:

Funzione SumMinus (dNum1 As Double, dNum2 As Double, dNum3 As Double) As Double SumMinus = dNum1 + dNum2 - dNum3 End Function

Questa prucedura VBA assai simplice funzioni illustra cumu e dati sò passati à una prucedura attraversu argumenti. Pudete vede chì u tipu di dati riturnatu da a prucedura hè definitu cum'è doppia (e parolle dicenu Cume Doppiu dopu à a lista di l'argumenti). Stu esempiu mostra ancu cumu u risultatu di a prucedura funzioni almacenatu in una variàbile cù u listessu nome cum'è u nome di a prucedura.

Chjama a prucedura VBA "Funzione"

Sè a prucedura simplice sopra funzioni inseritu in un modulu in l'editore Visual Basic, pò esse chjamatu da altre prucedure VBA o utilizatu in un fogliu di travagliu in un libru di Excel.

Chjamate a prucedura VBA "Funzione" da un altru prucessu

prucedura funzioni pò esse chjamatu da una altra prucedura VBA, semplicemente assignendu quella prucedura à una variàbile. L'esempiu seguente mostra una chjama à una prucedura Summinus, chì hè statu definitu sopra.

Sub main() Dim total as Double total = SumMinus (5, 4, 3) End Sub

Chjamate a prucedura VBA "Funzione" da un fogliu di travagliu

Prucedura VBA funzioni pò esse chjamatu da un fogliu di travagliu Excel in u listessu modu cum'è qualsiasi altra funzione Excel integrata. Dunque, a prucedura creata in l'esempiu precedente funzioni - Summinus pò esse chjamatu inserendu l'espressione seguente in una cellula di u fogliu di travagliu:

=SumMinus(10, 5, 2)

Procedura VBA "Sub"

L'editore VBA capisce chì ci hè una prucedura davanti Subquandu scontra un gruppu di cumandamenti chjusu trà e seguenti dichjarazioni di apertura è di chiusura:

Sub ... End Sub

Prucedura VBA "Sub": Esempiu 1. L'allineamentu di u centru è u cambiamentu di a dimensione di font in un intervallu sceltu di cellule

Cunsiderate un esempiu di una prucedura VBA simplice Sub, chì u so compitu hè di cambià u furmatu di a gamma selezziunata di cellule. I celi sò centrati (sia in verticale sia in l'orizzontale) è a dimensione di font hè cambiata à l'utente specificatu:

Sub Format_Centered_And_Sized (Optional iFontSize As Integer = 10) Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize End Sub

Sta prucedura Sub esegue azioni ma ùn torna micca un risultatu.

Questu esempiu usa ancu un argumentu Opzionale FontSize. Se l'argumentu FontSize micca passatu à a prucedura Sub, allura u so valore predeterminatu hè 10. Tuttavia, se l'argumentu FontSize passatu à a prucedura Sub, allura l'intervalu selezziunatu di e cellule serà stabilitu à a dimensione di font specificata da l'utilizatore.

VBA Sub Procedure: Esempiu 2: Center Align and Bold Font in Range Selected of Cells

A prucedura seguente hè simile à quellu chì hè statu discututu, ma sta volta, invece di ridimensionà, applicà un stile di font in grassu à a gamma scelta di cellule. Questu hè un prucessu di esempiu Sub, chì ùn piglia micca argumenti:

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

Chjama a prucedura "Sub" in Excel VBA

Chjamate a prucedura VBA "Sub" da un altru prucessu

Per chjamà una prucedura VBA Sub da una altra prucedura VBA, avete bisognu di scrive a chjave Preghera, nome di prucedura Sub è più in parentesi sò l'argumenti di a prucedura. Questu hè mostratu in l'esempiu sottu:

Sub main() Call Format_Centered_And_Sized(20) End Sub

Sè a prucedura Format_Centrated_And_Sized hà più di un argumentu, deve esse siparati da virgule. Cum'è què:

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

Chjamate a prucedura VBA "Sub" da u fogliu di travagliu

prucedura Sub ùn pò esse inseritu direttamente in una cellula di fogliu Excel, cum'è pò esse fattu cù una prucedura funzioniperchè a prucedura Sub ùn torna micca un valore. Tuttavia, prucedure Sub, chì ùn anu micca argumenti è sò dichjarati cum'è Public (cum'è mostra quì sottu) serà dispunibule per l'utilizatori di u fogliu di travagliu. Cusì, se i prucedure simplici discututi sopra Sub inseritu in un modulu in u Visual Basic Editor, a prucedura Format_Centrated_And_Bold serà dispunibule per l'usu in un fogliu di travagliu Excel, è a prucedura Format_Centrated_And_Sized - ùn serà micca dispunibule perchè hà argumenti.

Eccu un modu faciule per eseguisce (o eseguisce) una prucedura Sub, accessibile da u fogliu di travagliu:

  • Press Alt + F8 (preme a chjave Alt è mentre tenete premutu, appughjà a chjave F8).
  • In a lista di macros chì appare, selezziunate quellu chì vulete eseguisce.
  • Press Run (corri)

Per fà una prucedura Sub rapidamente è facilmente, pudete assignà una scurciatoia di tastiera. Per questu:

  • Press Alt + F8.
  • In a lista di macros chì appare, selezziunate quellu chì vulete assignà una scurciatoia di u teclatu.
  • Press login (Opzioni) è in a finestra di dialogu chì apparisce, entre in a scurciatoia di u teclatu.
  • Press OK è chjude u dialogu Macro (Macro).

Attenzione: Quandu assignate una scurciatoia di tastiera à una macro, assicuratevi chì ùn hè micca utilizatu cum'è standard in Excel (per esempiu, Ctrl + C). Se selezziunate una scurciata di teclatu esistente, serà riassignata à a macro, è per quessa, l'utilizatore pò inizià a macro per accidente.

Scopu di a prucedura VBA

A parte 2 di stu tutorialu hà discututu u scopu di variàbili è custanti è u rolu di e parolle chjave. Public и Private. Queste parole chjave ponu ancu esse usate cù i prucessi VBA:

Public Sub AddToCells(i As Integer) ... End Sub
Se a dichjarazione di a prucedura hè preceduta da a chjave Public, allura a prucedura serà dispunibule per tutti i moduli in quellu prughjettu VBA.
Private Sub AddToCells(i As Integer) ... End Sub
Se a dichjarazione di a prucedura hè preceduta da a chjave Private, allura sta prucedura serà dispunibule solu per u modulu attuale. Ùn pò micca esse chjamatu mentre in un altru modulu o da un libru di Excel.

Ricurdativi chì si prima di dichjarà una prucedura VBA funzioni or Sub keyword ùn hè micca inseritu, a pruprietà predeterminata hè stabilita per a prucedura Public (vale à dì, serà dispunibule in ogni locu in questu prughjettu VBA). Questu hè in cuntrastu cù e dichjarazioni variabili, chì per difettu sò Private.

Esci anticipata da e prucedure VBA "Funzione" è "Sub"

Sè avete bisognu di finisce l'esekzione di una prucedura VBA funzioni or Sub, senza aspittà a so fine naturali, allora per questu ci sò operatori Funzione Exit и Surtite Sub. L'usu di sti operatori hè mostratu quì sottu cù una prucedura simplice cum'è un esempiu. funzioniA chì aspetta di riceve un argumentu pusitivu per fà più operazioni. Se un valore micca pusitivu hè passatu à a prucedura, allora ùn ponu esse realizati più operazioni, cusì l'utilizatore deve esse mostratu un missaghju d'errore è a prucedura deve esce immediatamente:

Funzione VAT_Amount(sVAT_Rate As Single) As Single VAT_Amount = 0 If sVAT_Rate <= 0 Allora MsgBox "Aspittava un valore pusitivu di sVAT_Rate ma Ricevutu" & sVAT_Rate Exit Function End If... End Function

Per piacè nutate chì prima di compie a prucedura funzioni - VAT_Amount, una funzione VBA integrata hè inserita in u codice MsgBox, chì mostra un popup d'avvisu à l'utilizatore.

Lascia un Audiolibro