Llista desplegable amb selecció múltiple

La llista desplegable clàssica d'un full d'Excel és fantàstica, però només us permet seleccionar una opció del conjunt presentat. De vegades això és exactament el que voleu, però hi ha situacions en què l'usuari ha de poder triar alguns elements de la llista.

Vegem diverses implementacions típiques d'aquesta llista de selecció múltiple.

Opció 1. Horitzontal

L'usuari selecciona els elements de la llista desplegable un per un i apareixen a la dreta de la cel·la que s'està canviant, apareixent automàticament horitzontalment:

Les llistes desplegables a les cel·les C2:C5 d'aquest exemple es creen d'una manera estàndard, és a dir

  1. seleccioneu les cel·les C2:C5
  2. pestanya o menú dades triar un equip Validació de dades
  3. a la finestra que s'obre, seleccioneu una opció llista i especifiqueu com a interval font cel·les amb dades font per a la llista A1:A8

A continuació, heu d'afegir una macro al mòdul del full, que farà tota la feina principal, és a dir, afegir els valors seleccionats a la dreta de les cel·les verdes. Per fer-ho, feu clic amb el botó dret a la pestanya del full amb llistes desplegables i seleccioneu l'ordre Codi font. Enganxeu el codi següent a la finestra de l'editor de Visual Basic que s'obre:

Private Sub Worksheet_Change(ByVal Target As Range) En cas d'error Reprèn el següent si no Intersect(Target, Range("C2:C5")) No és res i Target.Cells.Count = 1 Aleshores Application.EnableEvents = False If Len(Target.Offset (0, 1)) = 0 Aleshores Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Si cal, substituïu l'interval sensible de les llistes desplegables C2:C5 de la segona línia d'aquest codi pel vostre.

Opció 2. Vertical

El mateix que a la versió anterior, però els nous valors seleccionats no s'afegeixen a la dreta, sinó a la part inferior:

Es fa exactament de la mateixa manera, però el codi de macro del controlador canvia lleugerament:

Private Sub Worksheet_Change(ByVal Target As Range) En cas d'error Reprèn el següent si no Intersect(Target, Range("C2:F2")) No és res i Target.Cells.Count = 1 Aleshores Application.EnableEvents = False If Len(Target.Offset (1, 0)) = 0 Aleshores Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

De nou, si cal, substituïu l'interval sensible de les llistes desplegables C2:F2 pel vostre a la segona línia d'aquest codi.

Opció 3. Amb acumulació a la mateixa cel·la

En aquesta opció, l'acumulació es produeix a la mateixa cel·la on es troba la llista desplegable. Els elements seleccionats estan separats per qualsevol caràcter (per exemple, una coma):

Les llistes desplegables en cel·les verdes es creen d'una manera completament estàndard, com en els mètodes anteriors. Tot el treball es fa, de nou, per una macro al mòdul de fulls:

Private Sub Worksheet_Change(ByVal Target As Range) En cas d'error Reprèn Següent Si no Intersect(Target, Range("C2:C5")) No és res i Target.Cells.Count = 1 Aleshores Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 I oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If End Sub  

Si voleu, podeu substituir el caràcter separador (coma) de la novena línia de codi pel vostre (per exemple, un espai o un punt i coma).

  • Com crear una llista desplegable senzilla en una cel·la de full d'Excel
  • Llista desplegable amb contingut
  • Llista desplegable amb les opcions que falten afegides
  • Què són les macros, com utilitzar-les, on inserir codi de macro a Visual Basic

Deixa un comentari