Come utilizzare If-Then in Excel 2016 VBA

If-Then è la struttura di controllo più importante di VBA. Probabilmente utilizzerai questo comando su base giornaliera. Utilizzare la struttura If-Then quando si desidera eseguire una o più istruzioni in modo condizionale. La clausola Else facoltativa, se inclusa, ti consente di eseguire una o più istruzioni se la condizione che stai testando non è vera. Ecco una semplice procedura CheckUser, ricodificata per utilizzare la struttura If-Then-Else:

Sub CheckUser2()
  UserName = InputBox ("Inserisci il tuo nome: ")
  Se UserName = "Satya Nadella" Allora
    MsgBox (“Benvenuto Satya…”)
'...[Altro codice qui]...
  Altro
    MsgBox “Scusa. Solo Satya Nadella può farlo".
  Finisci se
Fine sottotitolo

Esempi se-allora

La seguente routine mostra la struttura If-Then senza la clausola Else facoltativa:

Sub Salutami()
  Se Tempo < 0,5 Allora MsgBox "Buongiorno"
Fine sottotitolo

La procedura GreetMe utilizza la funzione Time di VBA per ottenere l'ora di sistema. Se l'ora corrente è inferiore a 0,5, la routine visualizza un saluto amichevole. Se Time è maggiore o uguale a 0,5, la routine termina e non accade nulla.

Per visualizzare un messaggio di saluto diverso se Time è maggiore o uguale a 0,5, puoi aggiungere un'altra istruzione If-Then dopo la prima:

Sub GreetMe2()
  Se Tempo < 0,5 Allora MsgBox "Buongiorno"
  Se Tempo >= 0,5 Allora MsgBox “Buon pomeriggio”
Fine sottotitolo

Notare che >= (maggiore o uguale a) viene utilizzato per la seconda istruzione If-Then. Questo assicura che l'intera giornata sia coperta. Se fosse stato usato > (maggiore di), nessun messaggio sarebbe apparso se questa procedura fosse stata eseguita esattamente alle 12:00. È abbastanza improbabile, ma con un programma importante come questo, non vuoi correre rischi.

Un esempio If-Then-Else

Un altro approccio al problema precedente utilizza la clausola Else. Ecco la stessa routine ricodificata per utilizzare la struttura If-Then-Else:

Sub GreetMe3()
  Se Tempo < 0,5 Allora MsgBox "Buongiorno" Altrimenti _
    MsgBox “Buon pomeriggio”
Fine sottotitolo

Si noti che nell'esempio precedente viene utilizzato il carattere di continuazione della riga (trattino basso). L'istruzione If-Then-Else è in realtà una singola istruzione. VBA fornisce un modo leggermente diverso di codificare i costrutti If-Then-Else che utilizzano un'istruzione End If. Pertanto, la procedura GreetMe può essere riscritta come

Sub GreetMe4()
  Se Tempo < 0,5 Allora
    MsgBox “Buongiorno”
  Altro
    MsgBox “Buon pomeriggio”
  Finisci se
Fine sottotitolo

In effetti, puoi inserire un numero qualsiasi di istruzioni nella parte If e un numero qualsiasi di istruzioni nella parte Else. Questa sintassi è più facile da leggere e rende le istruzioni più brevi.

Cosa succede se è necessario espandere la routine GreetMe per gestire tre condizioni: mattina, pomeriggio e sera? Sono disponibili due opzioni: utilizzare tre istruzioni If-Then o utilizzare una struttura If-Then-Else annidata . Annidare significa posizionare una struttura If-Then-Else all'interno di un'altra struttura If-Then-Else. Il primo approccio, utilizzando tre istruzioni If-Then, è più semplice:

Sub GreetMe5()
 Dim Msg As String
 Se Tempo < 0,5 Allora Msg = "Mattina"
 Se Tempo >= 0,5 E Tempo < 0,75 Allora Msg = “Pomeriggio”
 Se Tempo >= 0,75 Allora Msg = “Sera”
 MsgBox “Buono” & Msg
Fine sottotitolo

Una nuova svolta è stata aggiunta con l'uso di una variabile. La variabile Msg ottiene un valore di testo diverso, a seconda dell'ora del giorno. L'istruzione MsgBox visualizza il messaggio di saluto: Buongiorno, Buon pomeriggio o Buona sera.

La seguente routine esegue la stessa azione ma utilizza una struttura If-Then-End If:

Sub GreetMe6()
  Dim Msg As String
  Se Tempo < 0,5 Allora
    Msg = “Mattina”
  Finisci se
  Se Tempo >= 0,5 E Tempo < 0,75 Allora
    Msg = “Pomeriggio”
  Finisci se
  Se Tempo >= 0,75 Allora
    Msg = “Sera”
  Finisci se
  MsgBox “Buono” & Msg
Fine sottotitolo

Utilizzo di ElseIf

Negli esempi precedenti, viene eseguita ogni istruzione nella routine. Una struttura leggermente più efficiente uscirebbe dalla routine non appena una condizione risulta essere vera. Al mattino, ad esempio, la procedura dovrebbe visualizzare il messaggio Good Morning e poi uscire, senza valutare le altre condizioni superflue.

Con una piccola routine come questa, non devi preoccuparti della velocità di esecuzione. Ma per applicazioni più grandi in cui la velocità è fondamentale, dovresti conoscere un'altra sintassi per la struttura If-Then.

Ecco come puoi riscrivere la routine GreetMe usando questa sintassi:

Sub GreetMe7()
 Dim Msg As String
 Se Tempo < 0,5 Allora
   Msg = “Mattina”
 ElseIf Time >= 0.5 And Time <0.75 Then
   Msg = “Pomeriggio”
 Altro
   Msg = “Sera”
 Finisci se
 MsgBox “Buono” & Msg
Fine sottotitolo

Quando una condizione è vera, VBA esegue le istruzioni condizionali e la struttura If termina. In altre parole, questa procedura è un po' più efficiente degli esempi precedenti. Il compromesso è che il codice è più difficile da capire.

Un altro esempio If-Then

Ecco un altro esempio che usa la forma semplice della struttura If-Then. Questa procedura richiede all'utente una quantità e quindi visualizza lo sconto appropriato, in base alla quantità inserita dall'utente:

Sotto MostraSconto()
  Dim quantità come lungo
  Sconto dim come doppio
  Quantità = InputBox ("Inserisci quantità:")
  Se Quantità > 0 Allora Sconto = 0.1
  Se Quantità >= 25 Allora Sconto = 0.15
  Se Quantità >= 50 Allora Sconto = 0.2
  Se Quantità >= 75 Allora Sconto = 0.25
  MsgBox “Sconto: “ & Sconto
Fine sottotitolo

Notare che ogni istruzione If-Then in questa routine viene eseguita e il valore di Discount può cambiare durante l'esecuzione delle istruzioni. Tuttavia, la routine visualizza infine il valore corretto per Discount perché le istruzioni If-Then sono nell'ordine dei valori Discount crescenti.

La procedura seguente esegue le stesse attività utilizzando la sintassi ElseIf alternativa. In questo caso, la routine termina immediatamente dopo aver eseguito le istruzioni per una condizione vera:

Sotto MostraSconto2()
 Dim quantità come lungo
 Sconto dim come doppio
 Quantità = InputBox ("Inserisci quantità: ")
 Se Quantità > 0 e Quantità < 25 Allora
  Sconto = 0.1
 AltrimentiSe Quantità >= 25 E Quantità <50 Allora
  Sconto = 0,15
 AltrimentiSe Quantità >= 50 E Quantità <75 Allora
  Sconto = 0.2
 ElseIf Quantità >= 75 Allora
  Sconto = 0.25
 Finisci se
 MsgBox “Sconto: “ & Sconto
Fine sottotitolo

Queste strutture multiple If-Then sono piuttosto ingombranti. Potresti voler usare la struttura If-Then solo per semplici decisioni binarie.

Leave a Comment

Utili funzioni di data di Microsoft Power Query

Utili funzioni di data di Microsoft Power Query

Scopri le utili funzioni di data di Excel in Power Query per operazioni come aggiungere mesi, estrarre parti di data e ottenere il numero di giorni.

Come utilizzare il comando Vai a in Word 2016

Come utilizzare il comando Vai a in Word 2016

Scopri come utilizzare il comando Vai a in Word 2016 per navigare facilmente nel tuo documento tramite pagine o righe specifiche.

Access 2019: come modificare e modificare un database di Access

Access 2019: come modificare e modificare un database di Access

Scopri come modificare un database di Access in Access 2019: aggiungere campi, rinominarli e definire il tipo di dati. Guida passo passo per migliorare la tua esperienza con Access.

Smartsheet 9.1.1

Smartsheet 9.1.1

Smartsheet è una piattaforma di lavoro dinamica che ti consente di gestire progetti, creare flussi di lavoro e collaborare con il tuo team.

SharePoint

SharePoint

SharePoint è un sistema di collaborazione basato sul Web che utilizza una varietà di applicazioni per flussi di lavoro, database di "elenco" e altri componenti Web, nonché funzionalità di sicurezza per fornire controllo ai gruppi aziendali che lavorano insieme.

Calendario perpetuo 1.0.38/1.0.36

Calendario perpetuo 1.0.38/1.0.36

Van Nien Calendar è un'applicazione per la visualizzazione del calendario sul tuo telefono, che ti aiuta a vedere rapidamente la data lunisolare sul tuo telefono, organizzando così il tuo lavoro importante.

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook è un'applicazione aziendale e di produttività sviluppata da Microsoft Corporation.

Fare clic su

Fare clic su

ClickUp è una delle piattaforme di produttività più apprezzate per qualsiasi azienda. Grandi aziende come Google, Booking.com, San Diego Padres e Uber utilizzano ClickUp per aumentare la produttività sul posto di lavoro.

Visualizzatore PDF-XChange 2.5.322.10

Visualizzatore PDF-XChange 2.5.322.10

Il PDF è diventato un formato comunemente utilizzato per leggere, creare e inviare documenti di testo. A sua volta, c'è stato un aumento del numero di programmi utilizzati per questo tipo di documentazione. PDF-XChange Viewer fa parte di un numero crescente di visualizzatori PDF.

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice offre una suite completa di applicazioni Office che rivaleggiano con Microsoft 365, in particolare in Excel, PowerPoint e Word. Ti consente di gestire i tuoi progetti in modo più efficace e supporta diversi formati di file.