09 – Le MACRO – Le Input Box

La Input Box visualizza una finestra di dialogo che richiede all’utente l’inserimento di un determinato dato, di default contiene un pulsante OK e un pulsante Annulla. Confermando con OK La funzione restituirà una stringa di testo contenente l’input immesso, mentre cliccando su annulla la stringa sarà vuota.

Per far comparire a video queste input Box il comando utilizzato sarà InputBox ma vediamone subito la sintassi:

InputBox(prompt, [title], [default], [Xpos], [Ypos], [helpfile], [context])

Prompt: identifica il messaggio che vogliamo immettere.

Title: indicheremo il titolo della Input Box.

Default: è un testo che viene visualizzato nella casella di input come risposta predefinita se non viene immessa un’altra risposta

Xpos: è un numero intero che specifica la distanza della casella di input dal bordo sinistro dello schermo

Ypos: è un numero intero che specifica la distanza della casella di input dal bordo superiore dello schermo

HelpFile: è un argomento che identifica il file della guida.

Context: è un valore numerico che identifica l’ID per l’argomento della Guida.

Di tutti gli argomenti che abbiamo visto l’unico ad essere obbligatorio è quello che identifica il Prompt, di conseguenza partiamo dalla struttura più semplice e vediamo insieme le varie opzioni.

Portiamoci nell’area di sviluppo e scriviamo la nostra macro.

Diamo il nome alla Sub che chiameremo INPUTBOX1 e poiché la input Box richiede l’immissione di una stringa che può essere indifferentemente un testo od un numero, assegneremo tale risultato ad una variabile, quindi digitiamo:

venditore = inputbox (“inserisci un nome”)

di conseguenza assegneremo alla cella A3 il valore della variabile “venditore”, quindi proseguiamo scrivendo:

Range(“A3”) = venditore

Premiamo F8, comparirà la finestra di dialogo, cliccando su Annulla nella cella A1 verrà messa una stringa vuota, come prova passando con il mouse sulla variabile “venditore” il valore è uguale “”

Rifacciamo la stessa operazione ma ora inseriamo il nome, per esempio: “Marco” e dopo confermiamo premendo il pulsante OK.


Come visto con le Message Box anche per le Input Box possiamo cambiare il titolo ed ovviamente possiamo scrivere messaggi dal contenuto dinamico.

Creiamo quindi una Input Box per inserire la zona ed utilizziamo il contenuto della cella A1 come titolo, in questo caso scriviamo:

zona = inputbox(“Inserisci la zona”, Range(“a1”))

Range(“b3”) = zona

Premiamo F8 ed ecco il risultato


Se volessimo far comparire nella Input Box un messaggio predefinito, basterà indicare questo messaggio nell’argomento Default, di conseguenza copiamo le righe di codice precedentemente create ed aggiungiamo questo campo.

CTRL C + CTRL V

Aggiungiamo prima della seconda parentesi:      ,”SUD”

zona = inputbox(“Inserisci la zona”, Range(“a1”), “SUD”)

Range(“b3”) = zona

F8 e come potete vedere, ora nel campo di immissione dei dati è già presente il valore che abbiamo definito essere quello di default


Dando OK, il valore di default verrà scritto nella cella B3

Come visto all’inizio dalla sintassi, abbiamo un paio di argomenti che ci permettono di posizionare la casella Input box a seconda delle necessità, non indicando nulla, come abbiamo fatto fino ad ora la casella sarà automaticamente centrata sullo schermo.

Creiamo un’ultima riga di codice mettendo il valore del fatturato di gennaio ed indicando un valore dove posizionare la casella.

gen = inputbox(Range(“c2”), “fatturato”, , 1000, 1000)

Range(“c3”) = gen

Come sempre F8 ed ecco il risultato


Riprendendo un po’ quello che abbiamo imparato nelle scorse lezioni, nulla vieta di inserire un ciclo IF per controllare il valore immesso, e di inserire una Message Box che ci avvisi dell’errore, vediamo insieme come fare.

Supponiamo di ritenere valido un importo compreso fra 0 e 50000€ quindi aggiungiamo queste righe di codice:

ctrlgen:

gen = inputbox(Range(“c2”), “fatturato”, , 1000, 1000)

If gen < 0 Or gen > 50000 Then

    MsgBox “Controlla il valore”

    GoTo ctrlgen

Else

Range(“c3”) = gen

End If

Prima di finire una curiosità in merito al posizionamento della finestra Inputbox:

l’unità di misura predefinita in VBA è il twip e 1440 twips equivalgono a un pollice o se preferite 567 twips corrispondono a 1 cm, con questa informazione potete regolatevi di conseguenza con i valori da inserire per il posizionamento della Input Box.

Nel video qui sotto trovate tutti i passaggi appena illustrati, buona visione.