image

Sappiamo come creare un menu a discesa a cascata su un foglio di lavoro utilizzando la convalida dei dati. Ma come creiamo un menu a discesa combobox a cascata sul modulo utente VBA. Questo è uno dei bisogni fondamentali. In questo articolo, impareremo come creare una casella combinata dipendente in VBA. === Logica per casella combinata dipendente in VBA Per creare una casella combinata dipendente in VBA è necessario inizializzare la casella combinata sull’evento dell’elemento sorgente. Ad esempio, se una casella combinata dipende da un gruppo di pulsanti di opzione, il codice per caricare la casella combinata dipendente dovrebbe essere eseguito immediatamente dopo che qualcuno seleziona un pulsante di opzione. Oppure, se una casella combinata dipende da un’altra casella combinata, a seconda della casella combinata dovrebbe essere caricato ogni volta che il valore nella casella combinata viene modificato.

Basta con la teoria. Facciamo un esempio per vedere come funziona.

ComboBox a seconda di un’altra Combobox Crea due combobox. Innanzitutto si dovrebbero elencare i pochi nomi di paesi.

L’altro dovrebbe elencare i nomi degli stati del paese selezionato. Se l’utente cambia il paese nella prima casella combinata, l’elenco della seconda casella combinata dovrebbe essere cambiato.

Creiamo un modulo che abbia due combobox con etichette paesi e stati e un pulsante di comando per inviare l’input.

image

La prima casella combinata dovrebbe elencare i nomi dei paesi e non dipende da alcun valore. Quindi lo caricheremo nell’evento form_intialize come facciamo per l’inizializzazione di base della casella combinata.

Fare doppio clic sul modulo utente. Si aprirà l’area di codifica nell’oggetto UserForm. Ora dal menu a discesa a sinistra seleziona il modulo utente. Quindi dal menu a discesa a destra selezionare inizializza.

image

Verrà inserito un nome secondario vuoto UserForm_Initialize (). Qualsiasi cosa scritta in questo sottotitolo verrà eseguita prima che venga visualizzato il form utente.

Quindi scriviamo qui il codice di inizializzazione per la casella combinata.

Private Sub UserForm_Initialize()

countries = Array("India", "Nepal", "Bhutan", "Shree Lanka")

UserForm1.ComboBox1.List = states

End Sub

Abbiamo inizializzato la nostra prima casella combinata. Ogni volta che caricherai il form utente, la prima combox sarà pronta con il nome dei paesi.

Ora per caricare la seconda casella combinata, dobbiamo guardare quale valore è selezionato nella prima casella combinata1 ed eseguire il codice ogni volta che casella combinata1 cambia i suoi valori. Per questo useremo l’evento Combobox_AfterUpdate.

Dal menu a discesa a sinistra, seleziona combobox1. Dal menu a discesa a destra, seleziona AfterUpdate. Possiamo anche usare l’evento Change, ma nell’articolo ci atterremo a AfterUpdate.

Ora scrivi il codice sottostante:

Private Sub ComboBox1_AfterUpdate()

Select Case ComboBox1.Value

Case "India":

states = Array("Delhi", "UP", "UK", "Gujrat", "Kashmir")

Case "Nepal":

states = Array("Arun Kshetra", "Janakpur Kshetra", "Kathmandu Kshetra",_

"Gandak Kshetra", "Kapilavastu Kshetra")

Case "Bhutan":

states = Array("Bumthang", "Trongsa", "Punakha", "Thimphu", "Paro")

Case "Shree Lanka":

states = Array("Galle", "Ratnapura", "Colombo", "Badulla", "Jaffna")

End Select



ComboBox2.List = states



End Sub

image

Qui abbiamo usato un’istruzione select case. L’istruzione select case è utile quando vogliamo vedere quale valore viene scelto tra molti valori. L’ho spiegato link: / general-topics-in-vba-vba-select-case-alternative-of-nested-if-else-if-statements [qui in dettaglio].

Per memorizzare il valore inserito dall’utente utilizzare il pulsante di invio. Scrivi il codice seguente nel pulsante di comando invia per salvare il paese e lo stato selezionati dall’utente nel foglio di lavoro.

Private Sub CommandButton1_Click()

country = ComboBox1.Value

State = ComboBox2.Value

ThisWorkbook.Worksheets("sheet1").Range("G1") = country

ThisWorkbook.Worksheets("sheet1").Range("H1") = State

Unload Me

End Sub

Ora per mostrare il modulo utente, inserisci un pulsante nel foglio di lavoro e scrivi il codice seguente. Oppure puoi usare un semplice modulo per mostrare il modulo utente.

Sub load_userform()

UserForm1.Show

End Sub

Ora esegui il codice load_userform.

image

Come funziona?

Quando si esegue il sub che ha il codice userform.show, VBA esegue gli eventi userform_initialize immediatamente dopo aver eseguito il comando userform.show. Nell’evento userform_intialize abbiamo inizializzato la prima casella combinata che ha un elenco di paesi. Successivamente il modulo viene mostrato all’utente.

Ora, quando l’utente seleziona un valore dalla prima casella combinata, viene eseguito l’evento combobox1_AfterUpdate. Questo evento contiene il codice per controllare quale valore è selezionato dall’utente in combobox1 e in base a quel valore, imposta l’array di stati e inizializza i valori di combobox2 con l’array di stati.

Quindi sì ragazzi, è così che crei una casella combinata a cascata nel modulo utente VBA. Spero di essere stato abbastanza esplicativo e l’articolo è servito allo scopo. Se hai dubbi su questo articolo o su qualsiasi argomento VBA, chiedimi nella sezione commenti qui sotto.

Articoli correlati:

link: / applications-word-outlook-in-vba-get-started-with-excel-vba-userforms [Guida introduttiva ai form utente VBA di Excel] | * Spiegherò come creare un modulo in Excel, come usarlo Toolbox VBA, come gestire gli input dell’utente e infine come memorizzare gli input dell’utente. Affronteremo questi argomenti utilizzando un esempio e una guida passo passo.

link: / general-topics-in-vba-vba-variables-in-excel [VBA variables in Excel] | * VBA sta per Visual Basic for Applications.

È un linguaggio di programmazione di Microsoft. Viene utilizzato con applicazioni di Microsoft Office come MSExcel, MS-Word e MS-Access mentre le variabili VBA sono parole chiave specifiche.

link: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope] | * In tutti i linguaggi di programmazione, abbiamo specificatori di accesso alle variabili che definiscono da dove è possibile accedere a una variabile definita. Excel VBA non fa eccezione. Anche VBA ha specificatori di ambito.

link: / celle-intervalli-righe-e-colonne-in-vba-qual-è-la-differenza-tra-byref-e-byval-argomenti-vba-interview-question [Argomenti ByRef e ByVal] | Quando un argomento viene passato come argomento ByRef a un diverso sub o funzione, viene inviato il riferimento della variabile effettiva. Qualsiasi modifica apportata alla copia della variabile si rifletterà nell’argomento originale.

link: / files-cartella-di-lavoro-e-fogli di lavoro-in-vba-cancella-fogli-senza-richieste-di-conferma-usando-vba-in-microsoft-excel [Elimina fogli senza richieste di conferma usando VBA in Microsoft Excel] | Dato che stai eliminando fogli usando VBA, sai cosa stai facendo.

Vorresti dire a Excel di non mostrare questo avviso ed eliminare il dannato foglio.

Aggiungi e salva una nuova cartella di lavoro usando VBA in Microsoft Excel 2016 | In questo codice abbiamo prima creato un riferimento a un oggetto cartella di lavoro. E poi l’abbiamo inizializzato con un nuovo oggetto cartella di lavoro. Il vantaggio di questo approccio è che puoi eseguire facilmente le operazioni su questa nuova cartella di lavoro. Come salvare, chiudere, eliminare, ecc. Visualizza un messaggio su La barra di stato di Excel VBA * | La barra di stato in Excel può essere utilizzata come monitor del codice. Quando il tuo codice VBA è lungo e svolgi diverse attività utilizzando VBA, spesso disabiliti l’aggiornamento dello schermo in modo da non vedere lo sfarfallio dello schermo.

link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Turn Off Warning Messages Using VBA In Microsoft Excel 2016] | * Questo codice non solo disabilita VBA avvisa ma aumenta anche l’efficienza temporale del codice. Vediamo come.

Articoli popolari:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-aumentare-la-produttività [50 scorciatoie Excel per aumentare la produttività] | Diventa più veloce nel tuo compito. Queste 50 scorciatoie ti faranno lavorare ancora più velocemente su Excel.

link: / formule-e-funzioni-introduzione-di-vlookup-funzione [La funzione CERCA.VERT in Excel] | Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare valori da diversi intervalli e fogli. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Contare i valori con le condizioni utilizzando questa straordinaria funzione. Non è necessario filtrare i dati per contare valori specifici.

La funzione Countif è essenziale per preparare la tua dashboard.

link: / excel-formula-and-function-excel-sumif-function [Come usare la funzione SUMIF in Excel] | Questa è un’altra funzione essenziale della dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.