Come creare un elenco a discesa in Excel con selezioni multiple

  • Condividi Questo
Hugh West

Finora abbiamo esaminato come creare elenchi a discesa in Excel. Oggi mostrerò come creare un elenco a discesa con selezioni multiple in Excel .

Scarica il quaderno di esercizi

Potete scaricare il quaderno di esercizi da qui.

Creare un elenco a discesa con selezione multipla.xlsm

Procedure passo-passo per creare un elenco a discesa in Excel con selezioni multiple

Qui abbiamo un set di dati con una colonna Nome del libro che contiene alcuni nomi di libri. L'obiettivo di oggi è creare un elenco a discesa basato su questo set di dati che accetta selezioni multiple. Mostrerò le procedure passo-passo nella sezione seguente.

FASE 1: Creare un elenco a discesa utilizzando la convalida dei dati

Per creare un elenco a discesa con più selezioni, dobbiamo prima creare un elenco a discesa. Esaminiamo le procedure.

  • Per prima cosa, selezionare la cella in cui si desidera creare l'elenco a discesa. Ho selezionato Cella D5 .

  • Successivamente, andare alla sezione Dati e selezionare Convalida dei dati dal nastro.

  • Poi, dal Convalida dei dati selezionare la finestra Elenco in Consentire e scrivere le celle dell'intervallo i cui dati si vogliono aggiungere all'elenco nella sezione Fonte campo.
  • In alternativa, è possibile fare clic sulla piccola freccia rivolta verso l'alto nella finestra di dialogo Fonte e selezionare l'intervallo di dati dal foglio di lavoro.

  • Infine, vedremo un elenco a discesa creato in Cella D5 .

Letture simili:

  • Come creare un elenco a discesa in Excel (indipendente e dipendente)
  • Effettuare una selezione multipla da un elenco a discesa in Excel (3 modi)
  • Come creare un elenco a discesa dipendente in Excel
  • Creare un elenco a discesa in più colonne in Excel (3 modi)

FASE 2: Abilitazione dell'elenco a discesa ad accettare la selezione multipla tramite codice VBA

Abbiamo già creato l'elenco a discesa. Ora è il momento di preparare l'elenco a discesa per le selezioni multiple. Utilizzerò 2 VBA per consentire all'elenco di accettare selezioni multiple. Una accetterà la ripetizione dei dati e un'altra non accetterà la ripetizione dei dati.

Caso 1: Codice VBA per selezioni multiple con ripetizione

In questa sezione, mostrerò il modo in cui creare un elenco a discesa con selezioni multiple, che richiederà una ripetizione di dati.

Esaminiamo le procedure.

  • Per prima cosa, premere ALT + F11 per aprire il VBA finestra.
  • Quindi, selezionare Progetto Explorer . Inoltre, doppio - clicca sul foglio in cui si desidera svolgere l'attività.

  • Contemporaneamente, un Codice si aprirà la finestra.
  • Successivamente, scrivete il seguente codice in quella finestra.
 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String On Error GoTo Exitsub If Target.Address = "$D$5" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" ThenTarget.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Nota: Nella parte di codice ( Se Target.Address = "$D$5" Allora ) invece del riferimento alla cella $D$5, scrivete il riferimento alla cella in cui avete creato l'elenco a discesa.

  • Infine, tornando al foglio di lavoro, saremo in grado di selezionare più elementi nell'elenco a discesa con una ripetizione dello stesso elemento.

Caso 2: Codice VBA per la selezione multipla senza ripetizione

In questa sezione, mostrerò come creare un elenco a discesa con selezioni multiple che non richieda la ripetizione dei dati.

Esaminiamo le procedure.

  • Per prima cosa, premere ALT + F11 per aprire il VBA finestra.
  • Quindi, selezionare Progetto Explorer . Inoltre, doppio - clicca sul foglio in cui si desidera svolgere l'attività.

  • Contemporaneamente, un Codice apparirà la finestra di dialogo.
  • Successivamente, digitare il seguente codice nella finestra.
 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$5" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue =Target.Value Se Oldvalue = "" Allora Target.Value = Newvalue Else Se InStr(1, Oldvalue, Newvalue) = 0 Allora Target.Value = Oldvalue & ", " & Newvalue Else: Target.Value = Oldvalue End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Nota: Nella parte di codice ( Se Target.Address = "$D$5" Allora ) invece del riferimento alla cella $D$5, scrivete il riferimento alla cella in cui avete creato l'elenco a discesa.

  • Infine, tornando al foglio di lavoro, saremo in grado di selezionare più elementi nell'elenco a discesa senza ripetere lo stesso elemento.

Conclusione

Con questo metodo è possibile creare in Excel un elenco a discesa con più selezioni. Avete domande? Non esitate a comunicarcele nella sezione dei commenti. Visitate il nostro sito Sito web ExcelWIKI per ulteriori articoli riguardanti Excel .

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.