Come mettere in pausa una macro in attesa dell’input dall’utente

Coloro che utilizzano programmi di fogli di calcolo da un po’ di tempo, potrebbero ricordare il vecchio comando {?}~ disponibile in Lotus 1-2-3. Questo comando consentiva di mettere in pausa la macro mentre l’utente inseriva i dati nel foglio di calcolo.

Excel non include la stessa funzionalità, ma consente di richiedere input all’utente. I due metodi principali sono questi:

  • Funzione MsgBox. Questa funzione visualizza una finestra di dialogo e una serie di pulsanti. Quando l’utente fa clic su un pulsante, viene restituito un valore intero che indica il pulsante su cui è stato fatto clic. Il tuo programma può quindi agire in base al valore restituito (per ulteriori informazioni sulla funzione MsgBox, vedi questo suggerimento).
  • Funzione InputBox. Questa funzione visualizza una finestra di dialogo e consente all’utente di digitare una risposta. Qualunque cosa digitata dall’utente viene restituita come stringa alla macro. (per ulteriori informazioni sulla funzione InputBox, vedi questo suggerimento).

 

In base all’input dell’utente, è possibile modificare ciò che fa la macro nel modo che desideri. L’unico inconveniente delle funzioni è che restituiscono solo un singolo dato distinto. In altre parole, non sono progettate per consentire all’utente di inserire un intervallo di celle e quindi continuare l’elaborazione. Ad esempio, se volessi chiedere all’utente di fornire cinque valori destinati a cinque celle, dovresti presentare un InputBox cinque volte, depositando le risposte dell’utente nelle celle desiderate una dopo l’altra.

Ecco un tipico esempio dell’uso di InputBox e MsgBox: questa macro chiede di inserire una o più lettere di colonna e fornisce il numero di colonna corrispondente:

 

Sub ColNr()
    On Error Resume Next
    X = InputBox("Lettera/e di colonna")
    X = Sheets("Foglio1").Range(X & 1).Column
    MsgBox "Il numero di colonna è: " & X
End Sub

 

 

Puoi anche combinare 3 righe in una riga sola:

 

Sub ColNr2()
    On Error Resume Next
    MsgBox "Il numero di colonna è: " & Sheets("Foglio1").Range(InputBox("Lettera/e di colonna") & 1).Column
End Sub

 

 

 

Tags: , , , , , ,

Ti è stato utile?