Offrendo opzioni in una macro

Se si sono appena agli inizi di sviluppo macro, potrebbe essere alla ricerca di un modo semplice per offrire una serie di scelte per un utente, e quindi eseguire un'azione in base alla risposta dell'utente. Questo è un compito relativamente semplice, se si utilizza la funzione InputBox insieme ad una struttura Select Case.

Il primo compito è quello di impostare il InputBox in modo da visualizzare le informazioni per l'utente. Ad esempio, supponiamo di avere cinque opzioni e si desidera che l'utente di selezionare una opzione da quelle cinque. È possibile utilizzare il seguente codice per mettere insieme cinque opzioni, ciascuna sulla propria linea:

Prompt = "1. La presente è la prima scelta" & vbCrLf
Prompt = Prompt & "2. Questa è la tua seconda scelta" & vbCrLf
Prompt = Prompt & "3. Questa è la terza scelta" & vbCrLf
Prompt = Prompt & "4. Questa è la quarta scelta" & vbCrLf
Prompt = Prompt & "5. Questa è la quinta scelta"

È ora possibile utilizzare la stringa del prompt quando si richiama la funzione InputBox nella macro. È quindi tradurre ciò che l'utente risponde in un numero che rappresenta la loro scelta dai vostri cinque opzioni. Il codice per fare questo è il seguente:

UserResp = InputBox (Prompt, "The Big Question")
UR = Val (UserResp)

In questo esempio, la risposta dalla funzione InputBox viene assegnato alla variabile UserResp, che dovrebbe essere dimensionata come stringa. La variabile UR, che dovrebbe essere dimensionata come un intero, viene impostato in base al valore della stringa. (La funzione Val restituisce il valore in una stringa.)

L'unica cosa che resta da fare è di intraprendere un'azione in base al quale è stato scelto il numero, da 1 a 5. È possibile utilizzare la struttura Select Case per fare questo. La subroutine completo potrebbe apparire come segue:

Sub Macro1 ()
Dim Prompt As String
Dim UserResp As String
Dim UR As Integer

Prompt = "1. La presente è la prima scelta" & vbCrLf
Prompt = Prompt & "2. Questa è la tua seconda scelta" & vbCrLf
Prompt = Prompt & "3. Questa è la terza scelta" & vbCrLf
Prompt = Prompt & "4. Questa è la quarta scelta" & vbCrLf
Prompt = Prompt & "5. Questa è la quinta scelta"
UR = 0
Mentre UR <1 Or UR> 5
UserResp = InputBox (Prompt, "The Big Question")
UR = Val (UserResp)
Wend
Select Case UR
Caso 1
'Do roba per scelta 1 qui
Caso 2
'Do roba per scelta 2 qui
Caso 3
'Do roba per scelta 3 qui
Caso 4
'Do roba per scelta 4 qui
Caso 5
'Do roba per scelta 5 qui
End Select
End Sub

Si noti che questo esempio viene utilizzato un While ... Wend anello intorno alla funzione InputBox. Questo viene fatto per assicurarsi che l'utente inserisce un numero compreso tra 1 e 5. Se il valore immesso è al di fuori di tale intervallo, l'utente viene semplicemente chiesto di nuovo.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (3098) si applica a Microsoft Excel 97, 2000, 2002, e 2003. È possibile trovare una versione di questo suggerimento per l'interfaccia ribbon di Excel (Excel 2007 e versioni successive) qui: Opzioni Dotato di una macro.