Utilizzare le InputBox per inserire/modificare dati sul Foglio di lavoro. Funzione InputBox : Visualizza un messaggio in una finestra di dialogo (vedi), attendendo che l'utente immetta del testo o scelga un pulsante, quindi restituisce un valore String che include il contenuto della casella di testo. Aggiornamento 02/10/16 per il Metodo InputBox Spesso vorremmo disporre, per introdurre dati su determinate celle del foglio di lavoro, di una maschera che raccolga il dato da immettere, e lo "scarichi" poi in una cella per attivare le procedure presenti sul foglio stesso. Queste maschere di introduzione dati, altro non sono che "Finestre di Dialogo" (le ImputBox). Ecco una semplice routine, da inserire in un modulo e da associare ad un pulsante che attivi l'InputBox. Nell'esempio utilizzo la Cella A1 come destinazione del dato inserito, potrete modificare il riferimento per la cella che più vi aggrada. In verde sono i commenti :
E' possibile utilizzare la stessa InputBox per inserire più dati in celle diverse, se i dati corrispondono a valori predeterminati. Ipotizziamo di dover introdurre 3 tipi di dati condizionali (SE) in tre diverse celle. In A1 vorremo numeri solo SE compresi tra 1 e 100, in A2 sempre numeri solo SE compresi tra 200 e 300, ed infine in A3 vorremo dati solo SE sono testo. Ricordo che, anche qui, i riferimenti e i valori condizionali potranno essere adattati alle vostre esigenze, compreso l'inserimento, tramite ElseIf ......Then di nuove istruzioni prima di End If.
Utilizzare le InputBox ci consente quindi di "reperire dati" (valori, date, testo) da utilizzare in qualunque contesto si voglia : all'interno di routine per assegnare valori a delle variabili, oppure per inserire o modificare dati presenti in celle di un foglio di lavoro. Un altro semplice esempio può essere quello di usare due InputBox per modificare il valore di una cella, aggiungendo o togliendo valori (come in un carico e scarico di giacenze di un magazzino). Usiamo la cella D1 come esempio, ed usiamo la dizione breve per chiamare le InputBox:
Application.InputBox, metodo : Visualizza una finestra di dialogo per l'input dell'utente. Restituisce le informazioni immesse nella finestra di dialogo. A volte non guardiamo completamente tutte le informazioni che la guida in linea di Excel ci fornisce quando cerchiamo qualcosa, è questione di pigrizia o forse di fretta nel voler risolvere un problema, e qualche volta di ignoranza; ma anche io mi lascio prendere dalla fretta, e così mi sono perso qualcosa di interessante circa l'uso delle InputBox : quando sfogliamo la guida in linea, nella sintassi da utilizzare con le InputBox (Metodo) vediamo una serie di parametri (racchiusi tra parentesi) che sono opzioni che a volte possono modificare o anche stravolgere l'effetto che otterremo citandole, la sintassi esatta è: espressione.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type) Alcune opzioni sono necessarie altre sono facoltative, il parametro Type ad esempio, contiene diverse possibilità (valori) che restituiscono significati diversi:
Utilizzare InputBox per visualizzare una finestra di dialogo semplice in cui immettere i dati da utilizzare in una macro. La finestra di dialogo conterrà un pulsante OK e un pulsante Annulla. Se si sceglie OK, InputBox restituirà il valore immesso nella finestra di dialogo. Se si sceglie Annulla, InputBox restituirà False. Se Type è uguale a 0, InputBox restituirà la formula sotto forma di testo, ad esempio "=2*PI()/360". Se la formula contiene riferimenti, questi verranno restituiti come riferimenti di tipo A1. Per eseguire conversioni tra gli stili di riferimento, utilizzare ConvertFormula. Se Type è uguale a 8, InputBox restituirà un oggetto Range. È necessario utilizzare l'istruzione Set per assegnare il risultato a un oggetto Range, come mostrato nell'esempio che segue. Set myRange = Application.InputBox(prompt := "Sample", type := 8)
e visto che la variabile myRange excel la vede come un "oggetto", sarà possibile relazionarci all'oggetto con istruzioni come oggetto.Select, oggetto.Address, oggetto.Offset ecc. ecc.(chiaramente in questo esempio l'oggetto è myRange quindi, per i nubbi, myRange.Select, myRange.Address, myRange.Offset)
A volte gli esempi della guida sono abbastanza ermetici, spiegano si l'argomento, ma spesso mancano di esempi applicabili su come si possono usare gli esempi stessi; quindi facciamo un esempio per noi poveri pellegrini e commentiamolo: supponiamo di voler ottenere la somma dei valori dell'intervallo reperito con il metodo InputBox, potremmo usare una variabile come destinazione della somma con istruzione simile: AA = Application.Sum(myRange) per poi elaborarla ulteriormente o destinarla ad una cella del foglio, magari a lato dell'intervallo stesso, così:
myRange.Select
'selezioniamo tutto l'intervallo memorizzato in myRange
il tutto funziona egregiamente, ma rimane un problema : se i valori contenuti nell'intervallo vengono variati, la somma ricavata precedentemente non si aggiorna, questo perchè la scrittura è avvenuta per il lancio di istruzioni vba e quindi non esiste un collegamento che aggiorni automaticamente la somma, a meno che non vengano rilanciate le stesse iistruzioni; a volte questo "rilanciare la istruzioni" non appare cosa gradita. esiste quindi la soluzione: inserire nella cella destinata a contenere la somma, una formula residente con la funzione SOMMA(), vediamo come: basta modificare la sola riga finale appena vista, così: ActiveCell.Offset(0, 1).Formula = "=SUM(" & AA & ")" e quando anche uno solo dei valori cambierà, automaticamente la somma si aggiornerà. Vediamo la routine completa:
Sub eccolo() Un simpatico modo per generare intervalli al momento.
Buon lavoro. prelevato sul sito http://ennius.interfree.it |