Oggi creeremo alcune righe di codice che ci serviranno per far funzionare la UserForm che abbiamo visto nel post precedente.
Prima di entrare nel vivo della programmazione VBA diamo una breve spiegazione sulla funzione dei pulsanti che abbiamo inserito nella UserForm
Il pulsante Inserisci servirà per inserire i dati nella prima riga libera della tabella a partire dall’alto
Il pulsante Annulla cancellerà tutti i valori immessi nelle varie TextBox e ComboBox
Il pulsante Chiudi nasconderà la UserForm
Fatta questa premessa la prima operazione da fare sarà quella di inserire un pulsante che aprirà la UserForm
Andiamo in Sviluppo, Inserisci e scegliamo Pulsante dai Controlli modulo
Lo rinominiamo in Avvia UserForm, ed ora creiamo la macro all’evento di pressione del pulsante, in sostanza diremo di mostrare la UserForm denominata UserForm1
Sub Pulsante1_Click()
UserForm1.Show
End Sub
Premiamo il pulsante appena creato ed apparirà la UserForm
Ora passiamo a popolare la ComboBox, questo ci permetterà di inserire le zone di competenza scegliendole da un elenco. Per inserire le righe di codice, ci basterà cliccare due volte sulla ComboBox e nell’area di sviluppo si genererà la macro dedicata, tuttavia vogliamo che questi dati siano già presenti all’apertura della UserForm, di conseguenza i dati devono essere caricati in fase di inizializzazione della UserForm, quindi scegliamo l’oggetto giusto: la UserForm e l’azione corretta: Inizialize
A questo punto scriviamo:
Private Sub UserForm_Initialize()
ComboBox1.AddItem “NORD”
ComboBox1.AddItem “SUD”
ComboBox1.AddItem “EST”
ComboBox1.AddItem “OVEST”
End Sub
Facciamo una prova premendo sul pulsante Avvia UserForm e come potete vedere all’interno della ComboBox abbiamo gli items che abbiamo appena aggiunto.
Ora assegniamo le azioni che devono fare i vari pulsanti, partiamo dal più semplice: il pulsante Chiudi, doppio click sul pulsante per entrare in modalità programmazione e scriviamo:
Private Sub CommandButton3_Click()
UserForm1.Hide
End Sub
Se con il comando Show visto pochi istanti fa abbiamo fatto comparire la UserForm, col comando Hide andremo a nasconderla, come fatto prima premiamo il pulsante Avvia UserForm e premendo il pulsante Chiudi la UserForm scompare.
Passiamo al pulsante successivo, il pulsante Annulla, l’obiettivo è quello di svuotare il contenuto delle varie TextBox o meglio, andremo a sostituire il contenuto con delle stringhe vuote, vediamo subito come fare.
Doppio click sul pulsante Annulla, come sempre Excel ci agevola il lavoro creandoci gli estremi della Sub, quindi scriviamo:
Private Sub CommandButton2_Click()
TextBox1 = “”
TextBox2 = “”
TextBox3 = “”
TextBox4 = “”
ComboBox1 = “”
End Sub
Come fatto in precedenza verifichiamo che tutto funzioni correttamente.
Ora è il turno del tasto più importante, il tasto Inserisci, perché lo scopo di realizzare la UserForm è proprio quello di agevolare l’inserimento dei dati sul foglio di Excel, doppio click sul pulsante Inserisci
Prima di scrivere le righe di codice poniamoci una domanda: dove vogliamo che vengano inseriti i dati? Ovviamente ogni informazione deve finire nella colonna corretta, quindi il nome del Commerciale nella colonna A, la Zona nella colonna B e così via, ma il punto fondamentale è quello di individuare la prima riga disponibile, partiremo dalla cella A1 e scenderemo verso il basso trovando nel caso specifico la cella A3
Doppio click sul pulsante Inserisci e per fare questo il comando corretto è:
Private Sub CommandButton1_Click()
Range(“a1”).End(xlDown).Offset(1, 0).Select
Che significa: partiamo dalla cella A1 scendiamo fino all’ultima cella non vuota, la cella A2, con il comando Offset ci spostiamo verso il basso di una riga, di conseguenza col comando Select selezioniamo la cella A3
Come detto in precedenza vogliamo sapere il numero della riga della cella A3, per fare questo assegniamo alla variabile, che per comodità chiameremo “riga” il valore della riga della cella attiva, quindi scriviamo:
riga = ActiveCell.Row
Ora assegneremo alla cella con il valore della prima riga vuota e della prima colonna il valore della TextBox1 che corrisponde al nome del Venditore, di conseguenza scriviamo:
Cells(riga, 1) = TextBox1
Facciamo la stessa operazione per la zona di competenza il cui valore andrà a finire a parità di riga nella seconda colonna, in questo caso scriviamo:
Cells(riga, 2) = ComboBox1
Ora è arrivato il turno di inserire i valori dei fatturati nei relativi mesi, il procedimento è pressochè la fotocopia di quanto appena visto, se non fosse per una piccola differenza. Ciò che inseriamo nelle TextBox viene interpretato da Excel come testo, mentre noi vogliamo che i valori di fatturato siano dei valori numerici e che vengano pertanto formattati come tali, per fare ciò dobbiamo aggiungere una stringa di conversione, quindi scriveremo:
Cells(riga, 3) = CDbl(Me.TextBox2.Value)
Il commando CDbl converte il testo in numero, il comando Me.TextBox2.Value sta ad indicare il valore della TextBox2 contenuta nella UserForm attiva.
Con un copia e incolla scriviamo lo stesso codice per la TextBox3 e la TextBox4, che corrisponderanno relativamente ai mesi di Febbraio e Marzo:
Cells(riga, 4) = CDbl(Me.TextBox3.Value)
Cells(riga, 5) = CDbl(Me.TextBox4.Value)
End Sub
E’ arrivato il momento di verificare se tutto gira per il verso giusto, quindi attiviamo la nostra UserForm e proviamo ad inserire alcuni valori
Inseriamo altri valori per verificare che si popoli correttamente la riga n°4
Direi che con l’articolo della scorsa settimana e con quello di oggi abbiamo posto le basi per creare e gestire una piccola UserForm.
Nel video qui sotto trovate tutti i passaggi appena illustrati, buona visione.