Lis dropdown ak milti-chwazi

Lis drop-down klasik nan yon fèy Excel se gwo, men li sèlman pèmèt ou chwazi yon opsyon nan seri a prezante. Pafwa sa a se egzakteman sa ou vle, men gen sitiyasyon kote itilizatè a bezwen pou kapab chwazi kèk eleman nan lis la.

Ann gade nan plizyè aplikasyon tipik nan yon lis milti-chwazi.

Opsyon 1. Orizontal

Itilizatè a chwazi atik ki nan lis deroule a youn pa youn, epi yo parèt adwat selil la ap chanje, otomatikman yo ki nan lis orizontal:

Lis drop-down nan selil C2:C5 nan egzanp sa a yo kreye nan yon fason estanda, sa vle di

  1. chwazi selil C2:C5
  2. tab oswa meni Done chwazi yon ekip Validasyon Done
  3. nan fenèt la ki ouvè, chwazi yon opsyon Lis epi presize kòm yon seri sous selil ak done sous pou lis A1:A8

Lè sa a, ou bezwen ajoute yon makro nan modil la fèy, ki pral fè tout travay prensipal la, sa vle di ajoute valè chwazi sou bò dwat la nan selil vèt yo. Pou fè sa, klike sou dwa sou tab la fèy ak lis drop-down epi chwazi lòd la Kòd Sous. Kole kòd sa a nan fenèt editè Visual Basic ki ouvè:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Pa gen anyen ak Target.Cells.Count = 1 Lè sa a, Application.EnableEvents = Fo Si Len(Target.Offset) (0, 1)) = 0 Lè sa a, Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = Vrè Fen Si End Sub  

Si sa nesesè, ranplase seri sansib C2:C5 nan dezyèm liy kòd sa a ak pwòp ou a.

Opsyon 2. Vètikal

Menm jan ak nan vèsyon anvan an, men nouvo valè yo chwazi yo pa ajoute sou bò dwat la, men nan pati anba a:

Li fè egzakteman menm jan an, men kòd makro moun k ap okipe a chanje yon ti kras:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range ("C2:F2")) Pa gen anyen ak Target.Cells.Count = 1 Lè sa a, Application.EnableEvents = Fo Si Len(Target.Offset) (1, 0)) = 0 Lè sa a, Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Yon fwa ankò, si sa nesesè, ranplase seri sansib C2:F2 lis drop-down ak pwòp ou a nan dezyèm liy kòd sa a.

Opsyon 3. Avèk akimilasyon nan menm selil la

Nan opsyon sa a, akimilasyon an fèt nan menm selil la kote lis drop-down la sitiye. Eleman yo chwazi yo separe pa nenpòt karaktè yo bay (pa egzanp, yon vigil):

Lis drop-down nan selil vèt yo kreye nan yon fason konplètman estanda, tankou nan metòd anvan yo. Tout travay la fè, ankò, pa yon macro nan modil la fèy:

Private Sub Worksheet_Change(ByVal Target As Range) Sou erè rezime Next Si pa entèsekte(Target, Range("C2:C5")) Pa gen anyen ak Target.Cells.Count = 1 Lè sa a, Application.EnableEvents = Fo newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 And oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If Fen Sub  

Si ou vle, ou ka ranplase karaktè séparateur (vigil) nan 9yèm liy kòd la ak pwòp ou a (pa egzanp, yon espas oswa yon pwen-vir).

  • Ki jan yo kreye yon lis deroulant senp nan yon selil fèy Excel
  • Lis dropdown ak kontni
  • Lis dropdown ak opsyon ki manke yo te ajoute
  • Ki sa ki makro, ki jan yo sèvi ak yo, ki kote yo mete kòd macro nan Visual Basic

Kite yon Reply