Finestra immediata di Excel VBA - 5 fantastici modi per usarlo!

"Finestra immediata" può essere uno strumento utile da utilizzare quando si lavora con VBA in Excel.

La finestra Immediata ti consente di fare rapidamente cose come:

  • Ottieni informazioni sui file Excel (come il conteggio dei fogli in una cartella di lavoro o il nome della cartella di lavoro)
  • Ottieni rapidamente informazioni su Debug.Print
  • Esegui una riga di codice in pochi secondi
  • Esegui una macro (o chiama una funzione)
  • Ottieni informazioni sulle variabili (o imposta il valore o le variabili)

Sebbene non sia necessario utilizzare la finestra immediata per lavorare con VBA in Excel, sapere come usarlo bene può renderti molto più efficiente.

In questo tutorial, tratterò tutto ciò che devi sapere sulla finestra immediata e su come utilizzarla al meglio (spiegato con esempi).

Iniziamo!

Che cos'è una finestra immediata in Excel VBA?

Immediate Window è una parte dell'editor VB che puoi usare per fare alcune cose veloci.

Per farti un esempio, se hai una cartella di lavoro con alcuni fogli di lavoro nascosti e vuoi conoscere rapidamente il conteggio dei fogli di lavoro totali, puoi farlo in pochi secondi con la finestra Immediata.

Finestra immediata fa molto di più (come vedrai più avanti in questo tutorial). Ma per cominciare, pensiamo alla finestra immediata come uno strumento per aiutarti a velocizzare il tuo lavoro in Excel VBA.

Dove trovare la finestra immediata?

Quando apri l'editor VB di Excel, potresti già vedere la finestra immediata come parte dell'editor VB. E se non lo vedi già, puoi facilmente farlo apparire.

Di seguito sono riportati i passaggi per aprire l'editor VB e rendere visibile la finestra immediata:

  1. Fai clic sulla scheda "Sviluppatore" nella barra multifunzione di Excel (se non vedi la scheda sviluppatore, fai clic qui per sapere come ottenerla)
  2. Nel gruppo di codici, fare clic su "Visual Basic". Questo aprirà l'editor VB
  3. Nell'editor VB, fai clic sull'opzione "Visualizza" nel menu
  4. Fare clic su Finestra immediata. Questo farà apparire la finestra immediata nell'editor VB.

Se ti senti più a tuo agio con le scorciatoie, di seguito sono elencate alcune per accelerare i passaggi precedenti:

  • Per aprire l'editor VB - ALT + F11 (funziona anche se non hai la scheda Sviluppatore nella barra multifunzione)
  • Per mostrare la finestra immediata - Ctrl + Sol (usa questo l'editor VB è aperto)

Esempi di utilizzo della finestra immediata in Excel VBA

Ora che sai dove trovare la finestra immediata, vediamo alcuni fantastici esempi in cui puoi usarla quando lavori con Excel VBA.

Ottieni informazioni sui file/cartelle di lavoro

La "Finestra immediata" è un luogo in cui puoi porre domande sulle cartelle di lavoro e ti darà subito la risposta.

Ad esempio, supponiamo che tu abbia una cartella di lavoro e desideri sapere quanti fogli ci sono nella cartella di lavoro, puoi digitare il codice seguente nella finestra immediata e premere il tasto Invio.

"ActiveWorkbook.Sheets.Count"

Questo ti dirà immediatamente il numero totale di fogli nella cartella di lavoro attiva.

Questo può essere utile quando hai una cartella di lavoro che ha molti fogli e non puoi contarla manualmente (o non vuoi), o quando hai una cartella di lavoro in cui ci sono fogli nascosti e vuoi conoscere il totale contano.

Il ? (punto interrogativo) dovrebbe essere utilizzato prima della query in modo che VBA possa capire che stai facendo una domanda. Se non usi questo punto interrogativo, la finestra immediata non ti darà il dettaglio/risposta.

Ora, questo è un esempio davvero semplice in cui la finestra immediata ti fornisce alcune informazioni e fa risparmiare tempo.

Di seguito sono riportati alcuni altri esempi:

Per ottenere il nome della cartella di lavoro attiva

?ActiveWorkbook.Nome

Per ottenere il nome del foglio attivo

?Foglio attivo.Nome

Per ottenere il percorso della cartella di lavoro (l'indirizzo in cui è stata salvata)

"ActiveWorkbook.Path"

Quindi, se hai bisogno di qualcosa su un oggetto (come cartella di lavoro, fogli, grafici, forme, intervallo, ecc.), Puoi utilizzare la finestra immediata per ottenere rapidamente queste informazioni.

Ottieni informazioni su Debug.Print

In Excel VBA, Debug.Print viene utilizzato per mostrare istantaneamente il valore di una variabile nella finestra immediata.

Ad esempio, il codice seguente mostrerebbe immediatamente il messaggio "Buongiorno" nella finestra immediata.

Sub DisplayMessage() Debug.Print "Buongiorno" End Sub

È possibile utilizzare la riga Debug.Print nel codice per ottenere rapidamente alcuni dati nella finestra immediata o per eseguire il debug del codice.

Ad esempio, se desideri ottenere i nomi di tutti i fogli in una cartella di lavoro, puoi utilizzare il codice seguente:

Sub GetSheetNames() per ogni sh in ActiveWorkbook.Sheets Debug.Print sh.Name Next sh End Sub

Il codice sopra passa attraverso ogni foglio nella cartella di lavoro attiva e fornisce il nome nella finestra immediata.

Debug.Print è una tecnica utile per eseguire il debug del codice. Ad esempio, se stai eseguendo un ciclo e vuoi vedere quante volte è stato eseguito il ciclo, puoi semplicemente inserire una riga Debug.Print che mostra semplicemente i numeri incrementali quando viene eseguito ogni ciclo.

Se stai usando Debug.Stampa per eseguire il debug del codice, ricordati di rimuoverlo quando hai finito.

Esegui una macro (o una funzione)

Sebbene ci siano vari modi per eseguire una macro in Excel, uno dei modi rapidi è utilizzare la finestra immediata.

Per eseguire una macro, tutto ciò che devi fare è inserire il nome della macro nella finestra immediata e premere il tasto Invio (il cursore dovrebbe trovarsi alla fine del nome della macro affinché funzioni).

Di seguito è riportato un esempio, in cui non appena si inserisce il nome della macro nella finestra immediata, viene eseguito il codice (dove il codice visualizza il messaggio "Buongiorno" nella finestra immediata).

Questo può essere utile quando si dispone di un codice e si desidera verificare se funziona come previsto o meno. Puoi avere una o più righe Debug.Print nel codice ed eseguire la macro dalla finestra immediata.

Ti mostrerà immediatamente i valori nella finestra immediata e potrai verificare se tutto funziona correttamente o meno.

Puoi anche utilizzare la finestra immediata per eseguire anche funzioni personalizzate.

Ad esempio, nell'esempio seguente, viene creata una funzione per verificare se un numero è pari o dispari. Puoi eseguire questa funzione dalla finestra immediata digitando la funzione con l'argomento che richiede. È necessario utilizzare il punto interrogativo in questo caso poiché gli viene chiesto di restituire un valore memorizzato nella funzione.

Esegui una riga di codice (o più righe di codice)

Con la finestra immediata, puoi anche eseguire una riga di codice (o più righe di codici).

La parte migliore di questo è che puoi semplicemente aprire la finestra immediata, eseguire il codice e chiudere (a differenza di una macro che devi inserire in una finestra del modulo e quindi eseguire).

Un caso d'uso in cui ciò può essere utile è quando si desidera visualizzare rapidamente tutti i fogli nella cartella di lavoro.

Di seguito è riportato il codice che puoi inserire nella finestra immediata per visualizzare tutti i fogli nella cartella di lavoro. Posiziona il cursore alla fine della riga e non appena premi il tasto Invio, verranno visualizzati tutti i fogli.

Per ogni foglio in Thisworkbook.Sheets: Sheet.Visible=True: Next Sheet

Nota che sebbene sembri una singola riga di codice, è composta da tre parti.

Ogni parte è separata da un : (due punti), che agisce come un'interruzione di riga. Ciò consente di utilizzare il ciclo For Next nella finestra immediata per esaminare ciascun foglio e modificare la proprietà visibile in TRUE (che mostra qualsiasi foglio nascosto).

Ottieni valori variabili

Quando inizi a creare codici VBA complessi, dovresti fare affidamento su variabili per svolgere il lavoro.

Una variabile è qualcosa che contiene un valore e questo valore può cambiare quando il codice è in esecuzione. È possibile utilizzare una finestra immediata per verificare questi valori di variabili.

Di seguito è riportato un semplice codice che fornisce la somma dei primi 10 interi positivi e mostra il risultato nella finestra immediata.

Sub AddFirstTenNumbers() Dim Var As Integer Dim i As Integer Dim k As Integer For i = 1 To 10 k = k + i Next i Debug.Print i, k End Sub

Non appena esegui questo codice, vedrai il risultato seguente nella finestra immediata. Questo ti dice immediatamente che il codice sta funzionando bene e sta dando il risultato previsto.

Nel caso in cui non dia i risultati previsti, puoi eseguire il debug del codice.

Molte persone usano una finestra di messaggio durante il debug del codice. Anche se funziona bene, lo trovo un po' invadente in quanto mi porta alla cartella di lavoro di Excel e mostra una finestra di messaggio. D'altra parte, l'utilizzo della finestra immediata per il debug è molto più fluido e mi tiene nell'editor di Visual Basic stesso.

Nota: se stai lavorando con un codice complesso e hai più variabili che devi tenere traccia, è meglio usare una finestra di controllo. Una finestra di controllo ti consente di aggiungere una variabile e quindi puoi vedere come tale variabile cambia in tempo reale (o mentre passi attraverso il codice).

Imposta il valore della variabile durante il debug

Questo è un uso leggermente avanzato della finestra Immediata, ma se lo usi, può essere un enorme risparmio di tempo durante il debug del codice.

Puoi utilizzare la finestra immediata per impostare il valore di una variabile mentre esegui il codice in modalità debug (dove imposti un punto di interruzione in modo che il codice non venga eseguito completamente, ma fino a una riga specifica).

Ad esempio, se hai un ciclo che viene eseguito per 10 volte e vuoi controllare cosa succede quando il ciclo viene eseguito per l'ottava volta, non è necessario ripetere il ciclo sette volte per arrivare all'ottava iterazione. Puoi semplicemente aggiungere un punto di interruzione prima del ciclo e modificare la variabile del ciclo in 8. Ora, quando esegui il codice, ti mostrerà cosa succede quando i cicli vengono eseguiti per l'ottava volta.

Questo diventa molto più utile quando si scrivono codici complessi e si desidera eseguire il debug di loop specifici.

Supponiamo di avere un codice come mostrato di seguito:

Sub UnhideSheets() For i = 1 To Worksheets.Count Debug.Print Sheets(i).Name Next i End Sub

Il codice sopra elenca semplicemente i nomi dei fogli di tutti i fogli nella cartella di lavoro nella finestra immediata.

Se non si desidera elencare i nomi di tutti i fogli, ma solo i fogli dopo il decimo foglio, è possibile inserire un punto di interruzione nella seconda riga del ciclo (in modo che non venga eseguito nulla dopo quella riga) e quindi modificare il variabile 'i' a 11.

Per modificare il nome della variabile nella finestra immediata, inserire la seguente riga:

i=11

Ciò garantirà che le prime 10 volte del ciclo vengano ignorate e il valore della variabile sia impostato su 11.

Agganciare/sganciare la finestra immediata

Puoi avere una finestra ancorata immediatamente all'editor VB, il che significa che rimane in un punto dell'editor VB e si sposta e ridimensiona con essa.

E puoi anche averlo sganciato, il che significa che è indipendente dall'editor VB e può essere spostato come finestra autonoma.

Di seguito è riportato come è possibile modificare le impostazioni di aggancio per la finestra immediata:

  1. Fare clic sull'opzione Strumenti nel menu nell'editor VB
  2. Fare clic su "Opzioni"
  3. Nella finestra di dialogo Opzioni, fare clic sull'ultima scheda - Ancoraggio
  4. Seleziona l'opzione Finestra immediata per renderlo ancorabile e deselezionalo per renderlo non ancorabile.
  5. Fare clic su OK

In alternativa, se la finestra immediata è visibile, puoi anche fare clic con il pulsante destro del mouse e modificarne la proprietà agganciabile.

Agganciabile significa che la finestra immediata diventerebbe parte della finestra esistente posizionandosi in determinati punti, ad esempio a sinistra della finestra o in basso. Ciò consente alle finestre ancorate di spostarsi e ridimensionarsi insieme.

La finestra immediata non viene visualizzata: ecco alcuni modi per ottenerla

Potrebbero esserci molteplici ragioni per cui ciò accada.

Il motivo più comune per cui non vedi una finestra immediata è che non è stata resa visibile. Potrebbe non essere visibile per impostazione predefinita e per farlo apparire, devi andare all'opzione Visualizza nel menu e fare clic sull'opzione Finestra immediata. Ciò assicurerà che sia visibile nell'editor VB.

Puoi anche usare la tastiera Control + G per visualizzare la finestra immediata. Usa questa scorciatoia da tastiera mentre sei nell'editor VB.

Un altro motivo per cui potresti non vedere la finestra immediata è che è stata ridotta a icona ora è così chiusa che non puoi vederla (come riportato qui). Fai una rapida scansione e controlla se vedi un piccolo quadrato blu/rosso in agguato da qualche parte. Puoi passare il cursore su di esso e vedrai alcune opzioni per ridimensionarlo.

Se non riesci a vedere affatto la finestra immediata, ecco qualcosa che ha funzionato per molte persone (questo accade spesso a causa delle modifiche alla risoluzione dello schermo):

  1. Apri l'editor VB
  2. Premi Ctrl-G per attivare la finestra immediata (oppure fai clic sull'opzione Visualizza nel menu e quindi fai clic sulla finestra immediata)
  3. Tieni premuto il tasto ALT e poi premi la barra spaziatrice. Questo mostrerà le opzioni a discesa per la finestra immediata.
  4. Premi M (per Sposta)
  5. Usa i tasti freccia per spostare la finestra
  6. Una volta capito dov'è, ingrandiscilo

L'ho preso da un forum qui e ho anche notato che lo stesso viene suggerito come soluzione per la finestra immediata di VBA che non viene visualizzata.

Un'altra cosa che puoi provare è rendere sbloccabile la finestra immediata (vai su Strumenti -> Opzioni -> Ancoraggio e deseleziona l'opzione della finestra immediata). Questo ha funzionato per alcune persone.

Potrebbero interessarti anche i seguenti articoli:

  • Cartella di lavoro macro personale di Excel | Salva e usa le macro in tutte le cartelle di lavoro
  • Cicli VBA di Excel: For Next, Do While, Do Until, For Each (con esempi)
  • Lavorare con i fogli di lavoro utilizzando Excel VBA
  • Creazione di una funzione definita dall'utente (UDF) in Excel VBA
wave wave wave wave wave