VBA - Guida rapida

VBA sta per Visual Basic for Applicazioni un linguaggio di programmazione basato sugli eventi di Microsoft che ora viene utilizzato prevalentemente con applicazioni per ufficio Microsoft come MSExcel, MS-Word e MS-Access.

Aiuta i tecnici a creare applicazioni e soluzioni personalizzate per migliorare le capacità di tali applicazioni. Il vantaggio di questa funzionalità è che NON È NECESSARIO avere visual basic installato sul nostro PC, tuttavia, l'installazione di Office aiuterà implicitamente a raggiungere lo scopo.

È possibile utilizzare VBA in tutte le versioni per ufficio, direttamente da MS-Office 97 a MS-Office 2013 e anche con qualsiasi delle ultime versioni disponibili. Tra VBA, Excel VBA è il più popolare. Il vantaggio dell'utilizzo di VBA è che puoi creare strumenti molto potenti in MS Excel utilizzando la programmazione lineare.

Applicazione di VBA

Potresti chiederti perché utilizzare VBA in Excel poiché MS-Excel stesso fornisce un sacco di funzioni integrate. MS-Excel fornisce solo funzioni integrate di base che potrebbero non essere sufficienti per eseguire calcoli complessi. In tali circostanze, VBA diventa la soluzione più ovvia.

Ad esempio, è molto difficile calcolare il rimborso mensile di un prestito utilizzando le formule integrate di Excel. Piuttosto, è facile programmare un VBA per tale calcolo.

Accesso all'editor VBA

Nella finestra di Excel, premere "ALT + F11". Si apre una finestra VBA come mostrato nello screenshot seguente.

In questo capitolo imparerai come scrivere una semplice macro in modo graduale.

Step 1- Innanzitutto, abilita il menu "Sviluppatore" in Excel 20XX. Per fare lo stesso, fare clic su File → Opzioni.

Step 2- Fare clic sulla scheda "Personalizza barra multifunzione" e selezionare "Sviluppatore". Fare clic su "OK".

Step 3 - Il nastro "Sviluppatore" viene visualizzato nella barra dei menu.

Step 4 - Fare clic sul pulsante "Visual Basic" per aprire l'editor VBA.

Step 5- Avvia lo scripting aggiungendo un pulsante. Fare clic su Inserisci → Seleziona il pulsante.

Step 6 - Fai clic con il pulsante destro del mouse e scegli "proprietà".

Step 7 - Modifica il nome e la didascalia come mostrato nella seguente schermata.

Step 8 - Ora fai doppio clic sul pulsante e lo schema della sottoprocedura verrà visualizzato come mostrato nella schermata seguente.

Step 9 - Inizia a scrivere codice semplicemente aggiungendo un messaggio.

Private Sub say_helloworld_Click()
   MsgBox "Hi"
End Sub

Step 10- Fare clic sul pulsante per eseguire la sottoprocedura. L'output della sottoprocedura è mostrato nella seguente schermata. Assicurati di aver attivato la modalità di progettazione. Basta fare clic per accenderlo se non lo è.

Note - In ulteriori capitoli, dimostreremo l'utilizzo di un semplice pulsante, come spiegato dal passaggio # 1 al punto 10. Quindi, è importante comprendere a fondo questo capitolo.

In questo capitolo, acquisirai familiarità con le terminologie VBA excel comunemente utilizzate. Queste terminologie verranno utilizzate in ulteriori moduli, quindi la comprensione di ciascuna di esse è importante.

Moduli

I moduli è l'area in cui è scritto il codice. Questa è una nuova cartella di lavoro, quindi non ci sono moduli.

Per inserire un modulo, vai a Inserisci → Modulo. Una volta inserito un modulo, viene creato "modulo1".

All'interno dei moduli, possiamo scrivere codice VBA e il codice viene scritto all'interno di una procedura. Una procedura / procedura secondaria è una serie di istruzioni VBA che indicano cosa fare.

Procedura

Le procedure sono un gruppo di istruzioni eseguite nel loro insieme, che indica a Excel come eseguire un'attività specifica. L'attività svolta può essere un'attività molto semplice o molto complicata. Tuttavia, è buona norma suddividere procedure complicate in procedure più piccole.

I due tipi principali di procedure sono Sub e Function.

Funzione

Una funzione è un gruppo di codice riutilizzabile, che può essere chiamato ovunque nel programma. Ciò elimina la necessità di scrivere lo stesso codice più e più volte. Questo aiuta i programmatori a dividere un grande programma in un numero di funzioni piccole e gestibili.

Oltre alle funzioni integrate, VBA consente di scrivere anche funzioni definite dall'utente e le istruzioni vengono scritte tra Function e End Function.

Sottoprocedure

Le procedure secondarie funzionano in modo simile alle funzioni. Sebbene le procedure secondarie NON restituiscano un valore, le funzioni possono o non possono restituire un valore. Le procedure secondarie POSSONO essere chiamate senza parola chiave di chiamata. Le procedure secondarie sono sempre racchiuse all'internoSub e End Sub dichiarazioni.

I commenti vengono utilizzati per documentare la logica del programma e le informazioni utente con cui altri programmatori possono lavorare senza problemi sullo stesso codice in futuro.

Include informazioni sviluppate da, modificate da e può anche includere logica incorporata. I commenti vengono ignorati dall'interprete durante l'esecuzione.

I commenti in VBA sono indicati con due metodi.

  • Qualsiasi istruzione che inizia con una virgoletta singola (') viene considerata come commento. Di seguito è riportato un esempio.

' This Script is invoked after successful login 
' Written by : TutorialsPoint 
' Return Value : True / False
  • Qualsiasi istruzione che inizia con la parola chiave "REM". Di seguito è riportato un esempio.

REM This Script is written to Validate the Entered Input 
REM Modified by  : Tutorials point/user2

Il MsgBox function visualizza una finestra di messaggio e attende che l'utente faccia clic su un pulsante, quindi viene eseguita un'azione in base al pulsante selezionato dall'utente.

Sintassi

MsgBox(prompt[,buttons][,title][,helpfile,context])

Descrizione dei parametri

  • Prompt- Un parametro obbligatorio. Una stringa visualizzata come messaggio nella finestra di dialogo. La lunghezza massima del prompt è di circa 1024 caratteri. Se il messaggio si estende a più di una riga, è possibile separare le righe utilizzando un carattere di ritorno a capo (Chr (13)) o un carattere di avanzamento riga (Chr (10)) tra ciascuna riga.

  • Buttons- Un parametro facoltativo. Un'espressione numerica che specifica il tipo di pulsanti da visualizzare, lo stile dell'icona da utilizzare, l'identità del pulsante predefinito e la modalità della finestra di messaggio. Se lasciato vuoto, il valore predefinito per i pulsanti è 0.

  • Title- Un parametro facoltativo. Un'espressione String visualizzata nella barra del titolo della finestra di dialogo. Se il titolo viene lasciato vuoto, il nome dell'applicazione viene inserito nella barra del titolo.

  • Helpfile- Un parametro facoltativo. Un'espressione String che identifica il file della Guida da utilizzare per fornire la guida sensibile al contesto per la finestra di dialogo.

  • Context- Un parametro facoltativo. Un'espressione numerica che identifica il numero di contesto della Guida assegnato dall'autore della Guida all'argomento della Guida appropriato. Se viene fornito il contesto, è necessario fornire anche il file di aiuto.

Il Buttons il parametro può assumere uno dei seguenti valori:

  • 0 vbOKOnly - Visualizza solo il pulsante OK.

  • 1 vbOKCancel - Visualizza i pulsanti OK e Annulla.

  • 2 vbAbortRetryIgnore - Visualizza i pulsanti Interrompi, Riprova e Ignora.

  • 3 vbYesNoCancel - Visualizza i pulsanti Sì, No e Annulla.

  • 4 vbYesNo - Visualizza i pulsanti Sì e No.

  • 5 vbRetryCancel - Visualizza i pulsanti Riprova e Annulla.

  • 16 vbCritical - Visualizza l'icona del messaggio critico.

  • 32 vbQuestion - Visualizza l'icona di query di avviso.

  • 48 vbExclamation - Visualizza l'icona del messaggio di avviso.

  • 64 vbInformation - Visualizza l'icona del messaggio di informazioni.

  • 0 vbDefaultButton1: il primo pulsante è l'impostazione predefinita.

  • 256 vbDefaultButton2 - Il secondo pulsante è l'impostazione predefinita.

  • 512 vbDefaultButton3 - Il terzo pulsante è l'impostazione predefinita.

  • 768 vbDefaultButton4 - Il quarto pulsante è l'impostazione predefinita.

  • 0 vbApplicationModal Applicazione modale: l'applicazione corrente non funzionerà fino a quando l'utente non risponde alla finestra di messaggio.

  • 4096 vbSystemModal System modal - Tutte le applicazioni non funzioneranno fino a quando l'utente non risponde alla finestra di messaggio.

I valori di cui sopra sono logicamente suddivisi in quattro gruppi: Il first group(Da 0 a 5) indica i pulsanti da visualizzare nella finestra del messaggio. Ilsecond group (16, 32, 48, 64) descrive lo stile dell'icona da visualizzare, il third group (0, 256, 512, 768) indica quale pulsante deve essere il valore predefinito e il fourth group (0, 4096) determina la modalità della finestra di messaggio.

Valori restituiti

La funzione MsgBox può restituire uno dei seguenti valori che possono essere utilizzati per identificare il pulsante su cui l'utente ha fatto clic nella finestra del messaggio.

  • 1 - vbOK - È stato fatto clic su OK
  • 2 - vbCancel - È stato fatto clic su Annulla
  • 3 - vbAbort - È stato fatto clic su Abort
  • 4 - vbRetry - È stato fatto clic su Riprova
  • 5 - vbIgnore - Ignora è stato selezionato
  • 6 - vb Sì - È stato fatto clic su Sì
  • 7 - vbNo - No è ​​stato cliccato

Esempio

Function MessageBox_Demo() 
   'Message Box with just prompt message 
   MsgBox("Welcome")     
   
   'Message Box with title, yes no and cancel Butttons  
   int a = MsgBox("Do you like blue color?",3,"Choose options") 
   ' Assume that you press No Button  
   msgbox ("The Value of a is " & a) 
End Function

Produzione

Step 1 - La funzione di cui sopra può essere eseguita facendo clic sul pulsante "Esegui" nella finestra VBA o chiamando la funzione dal foglio di lavoro di Excel come mostrato nella schermata seguente.

Step 2 - Viene visualizzata una finestra di messaggio semplice con un messaggio "Benvenuto" e un pulsante "OK"

Step 3 - Dopo aver fatto clic su OK, viene visualizzata un'altra finestra di dialogo con un messaggio insieme ai pulsanti "sì, no e annulla".

Step 4- Dopo aver fatto clic sul pulsante "No", il valore di tale pulsante (7) viene memorizzato come un numero intero e visualizzato come una finestra di messaggio per l'utente, come mostrato nella schermata seguente. Utilizzando questo valore, è possibile capire su quale pulsante l'utente ha cliccato.

Il InputBox functionrichiede agli utenti di inserire valori. Dopo aver inserito i valori, se l'utente fa clic sul pulsante OK o preme INVIO sulla tastiera, la funzione InputBox restituirà il testo nella casella di testo. Se l'utente fa clic sul pulsante Annulla, la funzione restituirà una stringa vuota ("").

Sintassi

InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])

Descrizione dei parametri

  • Prompt- Un parametro obbligatorio. Una stringa visualizzata come messaggio nella finestra di dialogo. La lunghezza massima del prompt è di circa 1024 caratteri. Se il messaggio si estende a più di una riga, è possibile separare le righe utilizzando un carattere di ritorno a capo (Chr (13)) o un carattere di avanzamento riga (Chr (10)) tra ciascuna riga.

  • Title- Un parametro opzionale. Un'espressione String visualizzata nella barra del titolo della finestra di dialogo. Se il titolo viene lasciato vuoto, il nome dell'applicazione viene inserito nella barra del titolo.

  • Default- Un parametro opzionale. Un testo predefinito nella casella di testo che l'utente desidera venga visualizzato.

  • XPos- Un parametro opzionale. La posizione diXl'asse rappresenta la distanza del prompt dal lato sinistro dello schermo in orizzontale. Se lasciato vuoto, la casella di immissione è centrata orizzontalmente.

  • YPos- Un parametro opzionale. La posizione diYl'asse rappresenta la distanza del prompt dal lato sinistro dello schermo verticalmente. Se lasciato vuoto, la casella di immissione è centrata verticalmente.

  • Helpfile- Un parametro opzionale. Un'espressione String che identifica il file della guida da utilizzare per fornire la Guida sensibile al contesto per la finestra di dialogo.

  • context- Un parametro opzionale. Un'espressione numerica che identifica il numero di contesto della Guida assegnato dall'autore della Guida all'argomento della Guida appropriato. Se viene fornito il contesto, è necessario fornire anche il file di aiuto.

Esempio

Calcoliamo l'area di un rettangolo ottenendo i valori dall'utente in fase di esecuzione con l'aiuto di due caselle di input (una per la lunghezza e una per la larghezza).

Function findArea() 
   Dim Length As Double 
   Dim Width As Double 
   
   Length = InputBox("Enter Length ", "Enter a Number") 
   Width = InputBox("Enter Width", "Enter a Number") 
   findArea = Length * Width 
End Function

Produzione

Step 1 - Per eseguire lo stesso, chiamare utilizzando il nome della funzione e premere Invio come mostrato nella schermata seguente.

Step 2- Al momento dell'esecuzione, viene visualizzata la prima casella di immissione (lunghezza). Immettere un valore nella casella di input.

Step 3 - Dopo aver immesso il primo valore, viene visualizzata la seconda casella di immissione (larghezza).

Step 4- Dopo aver inserito il secondo numero, fare clic sul pulsante OK. L'area viene visualizzata come mostrato nella seguente schermata.

Variableè una posizione di memoria con nome utilizzata per contenere un valore che può essere modificato durante l'esecuzione dello script. Di seguito sono riportate le regole di base per denominare una variabile.

  • Devi usare una lettera come primo carattere.

  • Non è possibile utilizzare uno spazio, un punto (.), Un punto esclamativo (!) O i caratteri @, &, $, # nel nome.

  • Il nome non può superare i 255 caratteri di lunghezza.

  • Non è possibile utilizzare parole chiave riservate di Visual Basic come nome di variabile.

Syntax

In VBA, è necessario dichiarare le variabili prima di utilizzarle.

Dim <<variable_name>> As <<variable_type>>

Tipi di dati

Esistono molti tipi di dati VBA, che possono essere suddivisi in due categorie principali, ovvero tipi di dati numerici e non numerici.

Tipi di dati numerici

La tabella seguente mostra i tipi di dati numerici e l'intervallo di valori consentito.

genere Gamma di valori
Byte Da 0 a 255
Numero intero Da -32.768 a 32.767
Lungo -2.147.483.648 a 2.147.483.648
Single

Da -3.402823E + 38 a -1.401298E-45 per valori negativi

Da 1.401298E-45 a 3.402823E + 38 per valori positivi.

Doppio

-1.79769313486232e + 308 a -4.94065645841247E-324 per valori negativi

4.94065645841247E da 324 a 1.79769313486232e + 308 per valori positivi.

Moneta -922.337.203.685.477.5808 a 922.337.203.685.477.5807
Decimale

+/- 79.228.162.514.264.337.593.543.950.335 se non viene utilizzato alcun decimale

+/- 7,9228162514264337593543950335 (28 cifre decimali).

Tipi di dati non numerici

La tabella seguente mostra i tipi di dati non numerici e l'intervallo di valori consentito.

genere Gamma di valori
Stringa (lunghezza fissa) Da 1 a 65.400 caratteri
Stringa (lunghezza variabile) Da 0 a 2 miliardi di caratteri
Data Dal 1 gennaio 100 al 31 dicembre 9999
Booleano Vero o falso
Oggetto Qualsiasi oggetto incorporato
Variante (numerica) Qualsiasi valore grande come il doppio
Variante (testo) Uguale alla stringa di lunghezza variabile

Example

Creiamo un pulsante e chiamiamolo "Variables_demo" per dimostrare l'uso delle variabili.

Private Sub say_helloworld_Click()
   Dim password As String
   password = "Admin#1"

   Dim num As Integer
   num = 1234

   Dim BirthDay As Date
   BirthDay = DateValue("30 / 10 / 2020")

   MsgBox "Passowrd is " & password & Chr(10) & "Value of num is " &
      num & Chr(10) & "Value of Birthday is " & BirthDay
End Sub

Output

All'esecuzione dello script, l'output sarà come mostrato nello screenshot seguente.

La costante è una posizione di memoria denominata utilizzata per contenere un valore che NON PU essere modificato durante l'esecuzione dello script. Se un utente tenta di modificare un valore Constant, l'esecuzione dello script finisce con un errore. Le costanti vengono dichiarate nello stesso modo in cui vengono dichiarate le variabili.

Di seguito sono riportate le regole per denominare una costante.

  • Devi usare una lettera come primo carattere.

  • Non è possibile utilizzare uno spazio, un punto (.), Un punto esclamativo (!) O i caratteri @, &, $, # nel nome.

  • Il nome non può superare i 255 caratteri di lunghezza.

  • Non è possibile utilizzare parole chiave riservate di Visual Basic come nome di variabile.

Sintassi

In VBA, dobbiamo assegnare un valore alle costanti dichiarate. Viene generato un errore, se proviamo a modificare il valore della costante.

Const <<constant_name>> As <<constant_type>> = <<constant_value>>

Esempio

Creiamo un pulsante "Constant_demo" per dimostrare come lavorare con le costanti.

Private Sub Constant_demo_Click() 
   Const MyInteger As Integer = 42 
   Const myDate As Date = #2/2/2020# 
   Const myDay As String = "Sunday" 
   
   MsgBox "Integer is " & MyInteger & Chr(10) & "myDate is " 
      & myDate & Chr(10) & "myDay is " & myDay  
End Sub

Produzione

All'esecuzione dello script, l'output verrà visualizzato come mostrato nello screenshot seguente.

Un Operator può essere definito utilizzando una semplice espressione - 4 + 5 è uguale a 9. Qui vengono chiamati 4 e 5 operands e + è chiamato operator. VBA supporta i seguenti tipi di operatori:

  • Operatori aritmetici
  • Operatori di confronto
  • Operatori logici (o relazionali)
  • Operatori di concatenazione

Gli operatori aritmatici

I seguenti operatori aritmetici sono supportati da VBA.

Supponiamo che la variabile A contenga 5 e la variabile B contenga 10, quindi -

Mostra esempi

Operatore Descrizione Esempio
+ Aggiunge i due operandi A + B darà 15
- Sottrae il secondo operando dal primo A - B darà -5
* Moltiplica entrambi gli operandi A * B darà 50
/ Divide il numeratore per il denominatore B / A darà 2
% Operatore modulo e il resto dopo una divisione intera B% A darà 0
^ Operatore di esponenziazione B ^ A darà 100000

Gli operatori di confronto

Sono disponibili i seguenti operatori di confronto supportati da VBA.

Supponiamo che la variabile A contenga 10 e la variabile B ne contenga 20, quindi -

Mostra esempi

Operatore Descrizione Esempio
= Controlla se il valore dei due operandi è uguale o meno. Se sì, la condizione è vera. (A = B) è False.
<> Controlla se il valore dei due operandi è uguale o meno. Se i valori non sono uguali, la condizione è vera. (A <> B) è vero.
> Controlla se il valore dell'operando sinistro è maggiore del valore dell'operando destro. Se sì, la condizione è vera. (A> B) è False.
< Controlla se il valore dell'operando sinistro è inferiore al valore dell'operando destro. Se sì, la condizione è vera. (A <B) è vero.
> = Controlla se il valore dell'operando sinistro è maggiore o uguale al valore dell'operando destro. Se sì, la condizione è vera. (A> = B) è False.
<= Controlla se il valore dell'operando sinistro è minore o uguale al valore dell'operando destro. Se sì, la condizione è vera. (A <= B) è vero.

Gli operatori logici

I seguenti operatori logici sono supportati da VBA.

Supponiamo che la variabile A contenga 10 e la variabile B contenga 0, quindi -

Mostra esempi

Operatore Descrizione Esempio
E Chiamato operatore AND logico. Se entrambe le condizioni sono vere, allora l'espressione è vera. a <> 0 AND b <> 0 è False.
O Chiamato Operatore OR logico. Se una delle due condizioni è vera, la condizione è vera. a <> 0 OPPURE b <> 0 è vero.
NON Chiamato operatore NOT logico. Utilizzato per invertire lo stato logico del suo operando. Se una condizione è vera, l'operatore NOT logico la renderà falsa. NOT (a <> 0 OR b <> 0) è falso.
XOR Chiamata esclusione logica. È la combinazione di NOT e OR Operator. Se una, e solo una, delle espressioni restituisce True, il risultato è True. (a <> 0 XOR b <> 0) è vero.

Gli operatori di concatenazione

I seguenti operatori di concatenazione sono supportati da VBA.

Supponiamo che la variabile A contenga 5 e la variabile B contenga 10, quindi -

Mostra esempi

Operatore Descrizione Esempio
+ Aggiunge due valori come variabile. I valori sono numerici A + B darà 15
& Concatena due valori A & B darà 510

Assumi la variabile A = "Microsoft" e la variabile B = "VBScript", quindi -

Operatore Descrizione Esempio
+ Concatena due valori A + B darà MicrosoftVBScript
& Concatena due valori A & B darà MicrosoftVBScript

Note- Gli operatori di concatenazione possono essere utilizzati sia per i numeri che per le stringhe. L'output dipende dal contesto, se le variabili contengono un valore numerico o un valore stringa.

Il processo decisionale consente ai programmatori di controllare il flusso di esecuzione di uno script o di una delle sue sezioni. L'esecuzione è regolata da una o più istruzioni condizionali.

Di seguito è riportata la forma generale di una tipica struttura decisionale presente nella maggior parte dei linguaggi di programmazione.

VBA fornisce i seguenti tipi di dichiarazioni decisionali. Fare clic sui seguenti collegamenti per verificarne i dettagli.

Sr.No. Dichiarazione e descrizione
1 istruzione if

Un if L'istruzione consiste in un'espressione booleana seguita da una o più istruzioni.

2 if..else istruzione

Un if elseL'istruzione consiste in un'espressione booleana seguita da una o più istruzioni. Se la condizione è True, le istruzioni sottoIfvengono eseguite le istruzioni. Se la condizione è falsa, il fileElse parte dello script viene eseguita.

3 if ... elseif..else istruzione

Un if dichiarazione seguita da una o più ElseIf istruzioni, che consiste in espressioni booleane e quindi seguita da un opzionale else statement, che viene eseguito quando tutte le condizioni diventano false.

4 istruzioni if ​​annidate

Un if o elseif dichiarazione dentro un'altra if o elseif dichiarazione (i).

5 istruzione switch

UN switch consente di verificare l'uguaglianza di una variabile rispetto a un elenco di valori.

Potrebbe esserci una situazione in cui è necessario eseguire un blocco di codice più volte. In generale, le istruzioni vengono eseguite in sequenza: la prima istruzione in una funzione viene eseguita per prima, seguita dalla seconda e così via.

I linguaggi di programmazione forniscono varie strutture di controllo che consentono percorsi di esecuzione più complicati.

Un'istruzione loop ci consente di eseguire un'istruzione o un gruppo di istruzioni più volte. Di seguito è riportata la forma generale di un'istruzione loop in VBA.

VBA fornisce i seguenti tipi di loop per gestire i requisiti di loop. Fare clic sui seguenti collegamenti per verificarne i dettagli.

Sr.No. Tipo e descrizione del loop
1 per loop

Esegue una sequenza di istruzioni più volte e abbrevia il codice che gestisce la variabile del ciclo.

2 per ..ogni ciclo

Viene eseguito se è presente almeno un elemento nel gruppo e ripetuto per ogni elemento in un gruppo.

3 while..wend loop

Questo verifica la condizione prima di eseguire il corpo del ciclo.

4 do.. while loop

Le istruzioni do..While verranno eseguite fintanto che la condizione è True. (Cioè,) Il ciclo dovrebbe essere ripetuto fino a quando la condizione è False.

5 fare..fino a loop

Le istruzioni do..Until verranno eseguite fintanto che la condizione è False. (Cioè,) Il ciclo dovrebbe essere ripetuto fino a quando la condizione è True.

Dichiarazioni di controllo del loop

Le istruzioni di controllo del ciclo cambiano l'esecuzione dalla sua sequenza normale. Quando l'esecuzione esce da un ambito, tutte le istruzioni rimanenti nel ciclo NON vengono eseguite.

VBA supporta le seguenti istruzioni di controllo. Fare clic sui seguenti collegamenti per verificarne i dettagli.

S.No. Dichiarazione di controllo e descrizione
1 Esci per istruzione

Termina il For loop istruzione e trasferisce l'esecuzione all'istruzione immediatamente successiva al ciclo

2 Esci dall'istruzione Do

Termina il Do While istruzione e trasferisce l'esecuzione all'istruzione immediatamente successiva al ciclo

Le stringhe sono una sequenza di caratteri, che può essere composta da alfabeti, numeri, caratteri speciali o tutti. Si dice che una variabile sia una stringa se è racchiusa tra virgolette doppie "".

Sintassi

variablename = "string"

Esempi

str1 = "string"   ' Only Alphabets
str2 = "132.45"   ' Only Numbers
str3 = "!@#$;*"  ' Only Special Characters
Str4 = "Asc23@#"  ' Has all the above

Funzioni stringa

Esistono funzioni stringa VBA predefinite, che aiutano gli sviluppatori a lavorare con le stringhe in modo molto efficace. Di seguito sono riportati i metodi String supportati in VBA. Fare clic su ciascuno dei metodi per conoscere in dettaglio.

Sr.No. Nome e descrizione della funzione
1 InStr

Restituisce la prima occorrenza della sottostringa specificata. La ricerca avviene da sinistra a destra.

2 InstrRev

Restituisce la prima occorrenza della sottostringa specificata. La ricerca avviene da destra a sinistra.

3 Lcase

Restituisce il minuscolo della stringa specificata.

4 Ucase

Restituisce il maiuscolo della stringa specificata.

5 Sinistra

Restituisce un numero specifico di caratteri dal lato sinistro della stringa.

6 Destra

Restituisce un numero specifico di caratteri dal lato destro della stringa.

7 Mid

Restituisce un numero specifico di caratteri da una stringa in base ai parametri specificati.

8 Ltrim

Restituisce una stringa dopo aver rimosso gli spazi sul lato sinistro della stringa specificata.

9 Rtrim

Restituisce una stringa dopo aver rimosso gli spazi sul lato destro della stringa specificata.

10 Trim

Restituisce un valore stringa dopo aver rimosso gli spazi vuoti iniziali e finali.

11 Len

Restituisce la lunghezza della stringa data.

12 Sostituire

Restituisce una stringa dopo aver sostituito una stringa con un'altra stringa.

13 Spazio

Riempie una stringa con il numero di spazi specificato.

14 StrComp

Restituisce un valore intero dopo aver confrontato le due stringhe specificate.

15 Corda

Restituisce una stringa con un carattere specificato per il numero di volte specificato.

16 StrReverse

Restituisce una stringa dopo aver invertito la sequenza dei caratteri della stringa data.

Le funzioni di data e ora di VBScript aiutano gli sviluppatori a convertire la data e l'ora da un formato a un altro o ad esprimere il valore della data o dell'ora nel formato che si adatta a una condizione specifica.

Funzioni di data

Sr.No. Descrizione della funzione
1 Data

Una funzione, che restituisce la data di sistema corrente.

2 CDate

Una funzione, che converte un dato input in data.

3 DateAdd

Una funzione, che restituisce una data alla quale è stato aggiunto un intervallo di tempo specificato.

4 DateDiff

Una funzione, che restituisce la differenza tra due periodi di tempo.

5 DatePart

Una funzione, che restituisce una parte specificata del valore della data di input specificato.

6 DateSerial

Una funzione, che restituisce una data valida per l'anno, il mese e la data specificati.

7 FormatDateTime

Una funzione, che formatta la data in base ai parametri forniti.

8 IsDate

Una funzione, che restituisce un valore booleano indipendentemente dal fatto che il parametro fornito sia o meno una data.

9 Giorno

Una funzione, che restituisce un numero intero compreso tra 1 e 31 che rappresenta il giorno della data specificata.

10 Mese

Una funzione, che restituisce un numero intero compreso tra 1 e 12 che rappresenta il mese della data specificata.

11 Anno

Una funzione, che restituisce un numero intero che rappresenta l'anno della data specificata.

12 MonthName

Una funzione, che restituisce il nome del mese specifico per la data specificata.

13 WeekDay

Una funzione, che restituisce un numero intero (da 1 a 7) che rappresenta il giorno della settimana per il giorno specificato.

14 WeekDayName

Una funzione, che restituisce il nome del giorno della settimana per il giorno specificato.

Funzioni temporali

Sr.No. Descrizione della funzione
1 Adesso

Una funzione, che restituisce la data e l'ora del sistema corrente.

2 Ora

Una funzione, che restituisce un numero intero compreso tra 0 e 23 che rappresenta la parte oraria dell'ora specificata.

3 Minuto

Una funzione, che restituisce un numero intero compreso tra 0 e 59 che rappresenta la parte dei minuti del tempo specificato.

4 Secondo

Una funzione, che restituisce un numero intero compreso tra 0 e 59 che rappresenta la parte dei secondi del tempo specificato.

5 Tempo

Una funzione, che restituisce l'ora di sistema corrente.

6 Timer

Una funzione, che restituisce il numero di secondi e millisecondi a partire dalla mezzanotte.

7 TimeSerial

Una funzione, che restituisce l'ora per l'immissione specifica di ora, minuti e secondi.

8 TimeValue

Una funzione, che converte la stringa di input in un formato ora.

Sappiamo molto bene che una variabile è un contenitore per memorizzare un valore. A volte, gli sviluppatori sono in grado di contenere più di un valore in una singola variabile alla volta. Quando una serie di valori viene archiviata in una singola variabile, è nota comearray variable.

Dichiarazione di matrice

Gli array vengono dichiarati nello stesso modo in cui è stata dichiarata una variabile, tranne per il fatto che la dichiarazione di una variabile array utilizza le parentesi. Nell'esempio seguente, la dimensione dell'array è menzionata tra parentesi.

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Sebbene la dimensione dell'array sia indicata come 5, può contenere 6 valori poiché l'indice dell'array inizia da ZERO.

  • L'indice dell'array non può essere negativo.

  • Gli array VBScript possono memorizzare qualsiasi tipo di variabile in un array. Quindi, un array può memorizzare un numero intero, una stringa o caratteri in una singola variabile di array.

Assegnazione di valori a un array

I valori vengono assegnati all'array specificando un valore di indice dell'array rispetto a ciascuno dei valori da assegnare. Può essere una stringa.

Esempio

Aggiungi un pulsante e aggiungi la seguente funzione.

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		     'Number
   arr(3) = 2.45 		     'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

Quando si esegue la funzione di cui sopra, produce il seguente output.

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

Array multidimensionali

Gli array non sono limitati solo a una singola dimensione, ma possono avere un massimo di 60 dimensioni. Gli array bidimensionali sono quelli più comunemente usati.

Esempio

Nell'esempio seguente, una matrice multidimensionale viene dichiarata con 3 righe e 4 colonne.

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

Quando si esegue la funzione di cui sopra, produce il seguente output.

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

Dichiarazione ReDim

L'istruzione ReDim viene utilizzata per dichiarare le variabili di matrice dinamica e allocare o riallocare lo spazio di archiviazione.

Sintassi

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

Descrizione dei parametri

  • Preserve - Un parametro facoltativo utilizzato per preservare i dati in un array esistente quando si modifica la dimensione dell'ultima dimensione.

  • Varname - Un parametro obbligatorio, che denota il nome della variabile, che dovrebbe seguire le convenzioni di denominazione delle variabili standard.

  • Subscripts - Un parametro obbligatorio, che indica la dimensione dell'array.

Esempio

Nell'esempio seguente, un array è stato ridefinito e quindi i valori conservati quando la dimensione esistente dell'array viene modificata.

Note - Dopo aver ridimensionato un array più piccolo di quello che era originariamente, i dati negli elementi eliminati andranno persi.

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

Quando si esegue la funzione di cui sopra, produce il seguente output.

XYZ
41.25
22
3
4
5
6
7

Metodi di matrice

Ci sono varie funzioni integrate in VBScript che aiutano gli sviluppatori a gestire gli array in modo efficace. Di seguito sono elencati tutti i metodi utilizzati insieme agli array. Fare clic sul nome del metodo per conoscerlo in dettaglio.

Sr.No. Descrizione della funzione
1 LBound

Una funzione, che restituisce un numero intero che corrisponde al più piccolo indice degli array dati.

2 UBound

Una funzione, che restituisce un numero intero che corrisponde all'indice più grande degli array dati.

3 Diviso

Una funzione, che restituisce una matrice che contiene un numero specificato di valori. Dividi in base a un delimitatore.

4 Aderire

Una funzione, che restituisce una stringa che contiene un numero specificato di sottostringhe in una matrice. Questa è una funzione esattamente opposta del metodo Split.

5 Filtro

Una funzione, che restituisce una matrice in base zero che contiene un sottoinsieme di una matrice di stringhe in base a criteri di filtro specifici.

6 IsArray

Una funzione, che restituisce un valore booleano che indica se la variabile di input è o meno un array.

7 Cancellare

Una funzione, che recupera la memoria allocata per le variabili dell'array.

UN functionè un gruppo di codice riutilizzabile che può essere chiamato ovunque nel programma. Ciò elimina la necessità di scrivere lo stesso codice più e più volte. Ciò consente ai programmatori di dividere un grande programma in un numero di funzioni piccole e gestibili.

Oltre alle funzioni integrate, VBA consente di scrivere anche funzioni definite dall'utente. In questo capitolo imparerai come scrivere le tue funzioni in VBA.

Definizione di funzione

Una funzione VBA può avere un'istruzione return facoltativa. Ciò è necessario se si desidera restituire un valore da una funzione.

Ad esempio, puoi passare due numeri in una funzione e quindi puoi aspettarti che la funzione restituisca la loro moltiplicazione nel programma chiamante.

Note - Una funzione può restituire più valori separati da una virgola come un array assegnato al nome della funzione stessa.

Prima di utilizzare una funzione, dobbiamo definire quella particolare funzione. Il modo più comune per definire una funzione in VBA è utilizzare l'estensioneFunction parola chiave, seguita da un nome di funzione univoco e può contenere o meno un elenco di parametri e un'istruzione con End Functionparola chiave, che indica la fine della funzione. Di seguito è riportata la sintassi di base.

Sintassi

Aggiungi un pulsante e aggiungi la seguente funzione.

Function Functionname(parameter-list)
   statement 1
   statement 2
   statement 3
   .......
   statement n
End Function

Esempio

Aggiungi la seguente funzione che restituisce l'area. Notare che un valore / valori possono essere restituiti con il nome della funzione stessa.

Function findArea(Length As Double, Optional Width As Variant)
   If IsMissing(Width) Then
      findArea = Length * Length
   Else
      findArea = Length * Width
   End If
End Function

Chiamare una funzione

Per richiamare una funzione, chiamare la funzione utilizzando il nome della funzione come mostrato nella schermata seguente.

L'output dell'area come mostrato di seguito verrà visualizzato all'utente.

Sub Procedures sono simili alle funzioni, tuttavia ci sono alcune differenze.

  • Le procedure secondarie NON restituiscono un valore mentre le funzioni possono o non possono restituire un valore.

  • Le procedure secondarie POSSONO essere chiamate senza una parola chiave di chiamata.

  • Le procedure Sub sono sempre racchiuse nelle istruzioni Sub e End Sub.

Esempio

Sub Area(x As Double, y As Double)
   MsgBox x * y
End Sub

Procedure di chiamata

Per richiamare una procedura da qualche parte nello script, è possibile effettuare una chiamata da una funzione. Non saremo in grado di utilizzare lo stesso modo di una funzione in quanto la procedura secondaria NON restituirà un valore.

Function findArea(Length As Double, Width As Variant)
   area Length, Width    ' To Calculate Area 'area' sub proc is called
End Function

Ora sarai in grado di chiamare solo la funzione ma non la procedura secondaria come mostrato nello screenshot seguente.

L'area viene calcolata e visualizzata solo nella casella Messaggio.

La cella del risultato visualizza ZERO poiché il valore dell'area NON viene restituito dalla funzione. In breve, non è possibile effettuare una chiamata diretta a una procedura secondaria dal foglio di lavoro di Excel.

VBA, una programmazione guidata dagli eventi può essere attivata quando si modifica manualmente una cella o un intervallo di valori di cella. L'evento di modifica può semplificare le cose, ma puoi terminare molto rapidamente una pagina piena di formattazione. Esistono due tipi di eventi.

  • Eventi del foglio di lavoro
  • Eventi cartella di lavoro

Eventi del foglio di lavoro

Gli eventi del foglio di lavoro vengono attivati ​​quando c'è una modifica nel foglio di lavoro. Viene creato facendo clic con il pulsante destro del mouse sulla scheda del foglio e scegliendo "Visualizza codice", quindi incollando il codice.

L'utente può selezionare ciascuno di questi fogli di lavoro e scegliere "Foglio di lavoro" dal menu a discesa per ottenere l'elenco di tutti gli eventi del foglio di lavoro supportati.

Di seguito sono riportati gli eventi del foglio di lavoro supportati che possono essere aggiunti dall'utente.

Private Sub Worksheet_Activate() 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)    
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 
Private Sub Worksheet_Calculate() 
Private Sub Worksheet_Change(ByVal Target As Range) 
Private Sub Worksheet_Deactivate() 
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Esempio

Diciamo, dobbiamo solo visualizzare un messaggio prima del doppio clic.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   MsgBox "Before Double Click"
End Sub

Produzione

Facendo doppio clic su qualsiasi cella, la finestra di messaggio viene visualizzata all'utente come mostrato nello screenshot seguente.

Eventi cartella di lavoro

Gli eventi della cartella di lavoro vengono attivati ​​quando c'è una modifica nella cartella di lavoro nel suo complesso. Possiamo aggiungere il codice per gli eventi della cartella di lavoro selezionando "ThisWorkbook" e selezionando "cartella di lavoro" dal menu a discesa, come mostrato nello screenshot seguente. Immediatamente la procedura secondaria Workbook_open viene visualizzata all'utente come mostrato nello screenshot seguente.

Di seguito sono riportati gli eventi della cartella di lavoro supportati che possono essere aggiunti dall'utente.

Private Sub Workbook_AddinUninstall() 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Private Sub Workbook_Deactivate() 
Private Sub Workbook_NewSheet(ByVal Sh As Object) 
Private Sub Workbook_Open() 
Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) 
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
Private Sub Workbook_WindowActivate(ByVal Wn As Window) 
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window) 
Private Sub Workbook_WindowResize(ByVal Wn As Window)

Esempio

Diciamo, dobbiamo solo visualizzare un messaggio all'utente che un nuovo foglio è stato creato con successo, ogni volta che viene creato un nuovo foglio.

Private Sub Workbook_NewSheet(ByVal Sh As Object)
   MsgBox "New Sheet Created Successfully"
End Sub

Produzione

Dopo aver creato un nuovo foglio Excel, viene visualizzato un messaggio all'utente come mostrato nella seguente schermata.

Esistono tre tipi di errori nella programmazione: (a) errori di sintassi, (b) errori di runtime e (c) errori logici.

Errori di sintassi

Gli errori di sintassi, chiamati anche errori di analisi, si verificano al momento dell'interpretazione per VBScript. Ad esempio, la riga seguente causa un errore di sintassi perché manca una parentesi di chiusura.

Function ErrorHanlding_Demo()
   dim x,y
   x = "Tutorialspoint"
   y = Ucase(x
End Function

Errori di runtime

Gli errori di runtime, chiamati anche eccezioni, si verificano durante l'esecuzione, dopo l'interpretazione.

Ad esempio, la riga seguente causa un errore di runtime perché qui la sintassi è corretta ma in fase di runtime sta cercando di chiamare fnmultiply, che è una funzione inesistente.

Function ErrorHanlding_Demo1()
   Dim x,y
   x = 10
   y = 20
   z = fnadd(x,y)
   a = fnmultiply(x,y)
End Function

Function fnadd(x,y)
   fnadd = x + y
End Function

Errori logici

Gli errori logici possono essere il tipo di errore più difficile da rintracciare. Questi errori non sono il risultato di un errore di sintassi o di runtime. Invece, si verificano quando commetti un errore nella logica che guida il tuo script e non ottieni il risultato che ti aspettavi.

Non è possibile rilevare questi errori, perché dipende dai requisiti aziendali che tipo di logica si desidera inserire nel programma.

Ad esempio, dividendo un numero per zero o uno script scritto che entra in un ciclo infinito.

Err Object

Supponiamo che se abbiamo un errore di runtime, l'esecuzione si interrompe visualizzando il messaggio di errore. In qualità di sviluppatore, se vogliamo acquisire l'errore, alloraError L'oggetto viene utilizzato.

Esempio

Nell'esempio seguente, Err.Number fornisce il numero di errore e Err.Description fornisce la descrizione dell'errore.

Err.Raise 6   ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear   ' Clear the error.

Gestione degli errori

VBA abilita una routine di gestione degli errori e può essere utilizzato anche per disabilitare una routine di gestione degli errori. Senza un'istruzione On Error, qualsiasi errore di runtime che si verifica è irreversibile: viene visualizzato un messaggio di errore e l'esecuzione si interrompe bruscamente.

On Error { GoTo [ line | 0 | -1 ] | Resume Next }

Sr.No. Parola chiave e descrizione
1

GoTo line

Abilita la routine di gestione degli errori che inizia dalla riga specificata nell'argomento di riga richiesto. La riga specificata deve essere nella stessa procedura dell'istruzione On Error, altrimenti si verificherà un errore in fase di compilazione.

2

GoTo 0

Disabilita il gestore degli errori abilitato nella procedura corrente e lo reimposta su Nothing.

3

GoTo -1

Disabilita l'eccezione abilitata nella procedura corrente e la reimposta su Nothing.

4

Resume Next

Specifica che quando si verifica un errore di runtime, il controllo passa all'istruzione immediatamente successiva all'istruzione in cui si è verificato l'errore e l'esecuzione continua da quel punto.

Esempio

Public Sub OnErrorDemo()
   On Error GoTo ErrorHandler   ' Enable error-handling routine.
   Dim x, y, z As Integer
   x = 50
   y = 0
   z = x / y   ' Divide by ZERO Error Raises
  
   ErrorHandler:    ' Error-handling routine.
   Select Case Err.Number   ' Evaluate error number.
      Case 10   ' Divide by zero error
         MsgBox ("You attempted to divide by zero!")
      Case Else
         MsgBox "UNKNOWN ERROR  - Error# " & Err.Number & " : " & Err.Description
   End Select
   Resume Next
End Sub

Quando si programma utilizzando VBA, ci sono pochi oggetti importanti con cui un utente avrebbe a che fare.

  • Oggetti dell'applicazione
  • Oggetti cartella di lavoro
  • Oggetti del foglio di lavoro
  • Oggetti intervallo

Oggetti dell'applicazione

L'oggetto Application è costituito da quanto segue:

  • Impostazioni e opzioni a livello di applicazione.
  • Metodi che restituiscono oggetti di primo livello, come ActiveCell, ActiveSheet e così via.

Esempio

'Example 1 :
Set xlapp = CreateObject("Excel.Sheet") 
xlapp.Application.Workbooks.Open "C:\test.xls"

'Example 2 :
Application.Windows("test.xls").Activate

'Example 3:
Application.ActiveCell.Font.Bold = True

Oggetti cartella di lavoro

L'oggetto Cartella di lavoro è un membro della raccolta Cartelle di lavoro e contiene tutti gli oggetti Cartella di lavoro attualmente aperti in Microsoft Excel.

Esempio

'Ex 1 : To close Workbooks
Workbooks.Close

'Ex 2 : To Add an Empty Work Book
Workbooks.Add

'Ex 3: To Open a Workbook
Workbooks.Open FileName:="Test.xls", ReadOnly:=True

'Ex : 4 - To Activate WorkBooks
Workbooks("Test.xls").Worksheets("Sheet1").Activate

Oggetti del foglio di lavoro

L'oggetto foglio di lavoro è un membro della raccolta fogli di lavoro e contiene tutti gli oggetti foglio di lavoro in una cartella di lavoro.

Esempio

'Ex 1 : To make it Invisible
Worksheets(1).Visible = False

'Ex 2 : To protect an WorkSheet
Worksheets("Sheet1").Protect password:=strPassword, scenarios:=True

Oggetti intervallo

Gli oggetti intervallo rappresentano una cella, una riga, una colonna o una selezione di celle contenenti uno o più blocchi continui di celle.

'Ex 1 : To Put a value in the cell A5
Worksheets("Sheet1").Range("A5").Value = "5235"

'Ex 2 : To put a value in range of Cells
Worksheets("Sheet1").Range("A1:A4").Value = 5

Puoi anche leggere il file Excel e scrivere il contenuto della cella in un file di testo utilizzando VBA. VBA consente agli utenti di lavorare con file di testo utilizzando due metodi:

  • Oggetto File System
  • utilizzando il comando di scrittura

Oggetto file system (UST)

Come suggerisce il nome, gli UST aiutano gli sviluppatori a lavorare con unità, cartelle e file. In questa sezione discuteremo come utilizzare un UST.

Sr.No. Tipo di oggetto e descrizione
1

Drive

Drive è un oggetto. Contiene metodi e proprietà che consentono di raccogliere informazioni su un'unità collegata al sistema.

2

Drives

Drives è una collezione. Fornisce un elenco delle unità collegate al sistema, fisicamente o logicamente.

3

File

Il file è un oggetto. Contiene metodi e proprietà che consentono agli sviluppatori di creare, eliminare o spostare un file.

4

Files

File è una raccolta. Fornisce un elenco di tutti i file contenuti in una cartella.

5

Folder

La cartella è un oggetto. Fornisce metodi e proprietà che consentono agli sviluppatori di creare, eliminare o spostare cartelle.

6

Folders

Folders è una raccolta. Fornisce un elenco di tutte le cartelle all'interno di una cartella.

7

TextStream

TextStream è un oggetto. Consente agli sviluppatori di leggere e scrivere file di testo.

Guidare

Driveè un oggetto che fornisce l'accesso alle proprietà di una particolare unità disco o condivisione di rete. Le seguenti proprietà sono supportate daDrive oggetto -

  • AvailableSpace
  • DriveLetter
  • DriveType
  • FileSystem
  • FreeSpace
  • IsReady
  • Path
  • RootFolder
  • SerialNumber
  • ShareName
  • TotalSize
  • VolumeName

Esempio

Step 1- Prima di procedere allo scripting utilizzando FSO, dovremmo abilitare Microsoft Scripting Runtime. Per fare lo stesso, vai su Strumenti → Riferimenti come mostrato nello screenshot seguente.

Step 2 - Aggiungi "Microsoft Scripting RunTime" e fai clic su OK.

Step 3 - Aggiungi i dati che desideri scrivere in un file di testo e aggiungi un pulsante di comando.

Step 4 - Ora è il momento di Script.

Private Sub fn_write_to_text_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
  
   Dim fso As FileSystemObject
   Set fso = New FileSystemObject
   Dim stream As TextStream
  
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count
    
   ' Create a TextStream.
   Set stream = fso.OpenTextFile("D:\Try\Support.log", ForWriting, True)
  
   CellData = ""
  
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = Trim(ActiveCell(i, j).Value)
         stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData
      Next j
   Next i
  
   stream.Close
   MsgBox ("Job Done")
End Sub

Produzione

Quando si esegue lo script, assicurarsi di posizionare il cursore nella prima cella del foglio di lavoro. Il file Support.log viene creato come mostrato nella seguente schermata in "D: \ Try".

I contenuti del file sono mostrati nella seguente schermata.

Scrivi comando

A differenza di FSO, NON è necessario aggiungere alcun riferimento, tuttavia NON saremo in grado di lavorare con unità, file e cartelle. Saremo in grado di aggiungere semplicemente lo stream al file di testo.

Esempio

Private Sub fn_write_to_text_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
  
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count
    
   FilePath = "D:\Try\write.txt"
   Open FilePath For Output As #2
  
   CellData = ""
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value)
         Write #2, CellData
      Next j
   Next i
  
   Close #2
   MsgBox ("Job Done")
End Sub

Produzione

All'esecuzione dello script, il file "write.txt" viene creato nella posizione "D: \ Try" come mostrato nella seguente schermata.

Il contenuto del file è mostrato nella seguente schermata.

Utilizzando VBA, puoi generare grafici in base a determinati criteri. Vediamolo usando un esempio.

Step 1 - Immettere i dati rispetto ai quali deve essere generato il grafico.

Step 2 - Crea 3 pulsanti: uno per generare un grafico a barre, un altro per generare un grafico a torta e un altro per generare un grafico a colonne.

Step 3 - Sviluppa una macro per generare ciascuno di questi tipi di grafici.

' Procedure to Generate Pie Chart
Private Sub fn_generate_pie_graph_Click()
   Dim cht As ChartObject
   For Each cht In Worksheets(1).ChartObjects
      cht.Chart.Type = xlPie
   Next cht
End Sub

' Procedure to Generate Bar Graph
Private Sub fn_Generate_Bar_Graph_Click()
   Dim cht As ChartObject
   For Each cht In Worksheets(1).ChartObjects
      cht.Chart.Type = xlBar
   Next cht
End Sub

' Procedure to Generate Column Graph
Private Sub fn_generate_column_graph_Click()
   Dim cht As ChartObject
   For Each cht In Worksheets(1).ChartObjects
      cht.Chart.Type = xlColumn
   Next cht
End Sub

Step 4- Facendo clic sul pulsante corrispondente, viene creato il grafico. Nell'output seguente, fare clic sul pulsante Genera grafico a torta.

UN User Formè una finestra di dialogo personalizzata che rende l'immissione di dati utente più controllabile e più facile da usare per l'utente. In questo capitolo imparerai a progettare un modulo semplice e ad aggiungere dati in Excel.

Step 1- Passa alla finestra VBA premendo Alt + F11 e vai al menu "Inserisci" e seleziona "Modulo utente". Dopo la selezione, il modulo utente viene visualizzato come mostrato nella seguente schermata.

Step 2 - Progettare i moduli utilizzando i controlli forniti.

Step 3- Dopo aver aggiunto ogni controllo, i controlli devono essere denominati. La didascalia corrisponde a ciò che appare nel modulo e il nome corrisponde al nome logico che apparirà quando scrivi il codice VBA per quell'elemento.

Step 4 - Di seguito sono riportati i nomi rispetto a ciascuno dei controlli aggiunti.

Controllo Nome logico Didascalia
A partire dal frmempform Modulo dipendente
Etichetta di identificazione del dipendente empido ID Dipendente
Firstname Label Box nome di battesimo Nome di battesimo
Lastname Etichetta Box cognome Cognome
dob Etichetta Box dob Data di nascita
Mailid Etichetta Box mailid E-mail identificativo utente
Etichetta porta passaporto Porta passaporto Porta passaporto
Casella di testo ID Emp txtempid Non applicabile
Casella di testo del nome txtfirstname Non applicabile
Casella di testo del cognome txtlastname Non applicabile
Casella di testo ID e-mail txtemailid Non applicabile
Casella combinata data cmbdate Non applicabile
Casella combinata mese cmbmonth Non applicabile
Casella combinata anno cmbyear Non applicabile
Sì pulsante di opzione radio sì
Nessun pulsante di opzione radiono No
Pulsante Invia btnsubmit Invia
Pulsante Annulla btncancel Annulla

Step 5 - Aggiungi il codice per l'evento di caricamento del modulo facendo clic con il pulsante destro del mouse sul modulo e selezionando "Visualizza codice".

Step 6 - Seleziona "Modulo utente" dal menu a discesa degli oggetti e seleziona il metodo "Inizializza" come mostrato nella seguente schermata.

Step 7 - Dopo aver caricato il modulo, assicurarsi che le caselle di testo siano deselezionate, le caselle a discesa siano riempite e i pulsanti di opzione siano ripristinati.

Private Sub UserForm_Initialize()
   'Empty Emp ID Text box and Set the Cursor 
   txtempid.Value = ""
   txtempid.SetFocus
   
   'Empty all other text box fields
   txtfirstname.Value = ""
   txtlastname.Value = ""
   txtemailid.Value = ""
   
   'Clear All Date of Birth Related Fields
   cmbdate.Clear
   cmbmonth.Clear
   cmbyear.Clear
   
   'Fill Date Drop Down box - Takes 1 to 31
   With cmbdate
      .AddItem "1"
      .AddItem "2"
      .AddItem "3"
      .AddItem "4"
      .AddItem "5"
      .AddItem "6"
      .AddItem "7"
      .AddItem "8"
      .AddItem "9"
      .AddItem "10"
      .AddItem "11"
      .AddItem "12"
      .AddItem "13"
      .AddItem "14"
      .AddItem "15"
      .AddItem "16"
      .AddItem "17"
      .AddItem "18"
      .AddItem "19"
      .AddItem "20"
      .AddItem "21"
      .AddItem "22"
      .AddItem "23"
      .AddItem "24"
      .AddItem "25"
      .AddItem "26"
      .AddItem "27"
      .AddItem "28"
      .AddItem "29"
      .AddItem "30"
      .AddItem "31"
   End With
   
   'Fill Month Drop Down box - Takes Jan to Dec
   With cmbmonth
      .AddItem "JAN"
      .AddItem "FEB"
      .AddItem "MAR"
      .AddItem "APR"
      .AddItem "MAY"
      .AddItem "JUN"
      .AddItem "JUL"
      .AddItem "AUG"
      .AddItem "SEP"
      .AddItem "OCT"
      .AddItem "NOV"
      .AddItem "DEC"
   End With
   
   'Fill Year Drop Down box - Takes 1980 to 2014
   With cmbyear
      .AddItem "1980"
      .AddItem "1981"
      .AddItem "1982"
      .AddItem "1983"
      .AddItem "1984"
      .AddItem "1985"
      .AddItem "1986"
      .AddItem "1987"
      .AddItem "1988"
      .AddItem "1989"
      .AddItem "1990"
      .AddItem "1991"
      .AddItem "1992"
      .AddItem "1993"
      .AddItem "1994"
      .AddItem "1995"
      .AddItem "1996"
      .AddItem "1997"
      .AddItem "1998"
      .AddItem "1999"
      .AddItem "2000"
      .AddItem "2001"
      .AddItem "2002"
      .AddItem "2003"
      .AddItem "2004"
      .AddItem "2005"
      .AddItem "2006"
      .AddItem "2007"
      .AddItem "2008"
      .AddItem "2009"
      .AddItem "2010"
      .AddItem "2011"
      .AddItem "2012"
      .AddItem "2013"
      .AddItem "2014"
   End With
   
   'Reset Radio Button. Set it to False when form loads.
   radioyes.Value = False
   radiono.Value = False

End Sub

Step 8- Ora aggiungi il codice al pulsante Invia. Facendo clic sul pulsante di invio, l'utente dovrebbe essere in grado di aggiungere i valori nel foglio di lavoro.

Private Sub btnsubmit_Click()
   Dim emptyRow As Long
  
   'Make Sheet1 active
   Sheet1.Activate
  
   'Determine emptyRow
   emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
  
   'Transfer information
   Cells(emptyRow, 1).Value = txtempid.Value
   Cells(emptyRow, 2).Value = txtfirstname.Value
   Cells(emptyRow, 3).Value = txtlastname.Value
   Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
   Cells(emptyRow, 5).Value = txtemailid.Value
  
   If radioyes.Value = True Then
      Cells(emptyRow, 6).Value = "Yes"
   Else
      Cells(emptyRow, 6).Value = "No"
   End If
End Sub

Step 9 - Aggiungere un metodo per chiudere il modulo quando l'utente fa clic sul pulsante Annulla.

Private Sub btncancel_Click()
   Unload Me
End Sub

Step 10- Eseguire il modulo facendo clic sul pulsante "Esegui". Immettere i valori nel modulo e fare clic sul pulsante "Invia". Automaticamente i valori fluiranno nel foglio di lavoro come mostrato nello screenshot seguente.