Nolaižamais saraksts ar vairāku atlasi

Klasiskais nolaižamais saraksts Excel lapā ir lielisks, taču tas ļauj atlasīt tikai vienu opciju no piedāvātās kopas. Dažreiz tas ir tieši tas, ko vēlaties, taču ir situācijas, kad lietotājam ir jāspēj izvēlēties daži elementi no saraksta.

Apskatīsim vairākas tipiskas šāda vairāku atlases saraksta ieviešanas iespējas.

Variants 1. Horizontāli

Lietotājs nolaižamajā sarakstā izvēlas vienumus pa vienam, un tie parādās pa labi no mainītās šūnas, automātiski tiek uzskaitīti horizontāli:

Nolaižamie saraksti šūnās C2:C5 šajā piemērā ir izveidoti standarta veidā, ti

  1. atlasiet šūnas C2:C5
  2. cilne vai izvēlne Datums izvēlēties komandu Datu validācija
  3. atvērtajā logā atlasiet opciju saraksts un norādiet kā diapazonu avots šūnas ar avota datiem sarakstam A1:A8

Pēc tam lapas modulim jāpievieno makro, kas veiks visu galveno darbu, ti, pa labi no zaļajām šūnām pievienos atlasītās vērtības. Lai to izdarītu, ar peles labo pogu noklikšķiniet uz lapas cilnes ar nolaižamajiem sarakstiem un atlasiet komandu Pirmkods. Atvērtajā Visual Basic redaktora logā ielīmējiet šo kodu:

Private Sub Worksheet_Change(ByVal Target As Range) kļūdas gadījumā Atsākt Nākamo Ja nekrustojas(Mērķis, Diapazons("C2:C5")) ir nekas un Target.Cells.Count = 1 Tad Application.EnableEvents = False, ja Len(Target.Offset (0, 1)) = 0 Tad Target.Offset(0, 1) = Target Citādi Target.End(xlToRight).Offset(0, 1) = mērķa beigas, ja Target.ClearContents Application.EnableEvents = True End If End Sub  

Ja nepieciešams, šī koda otrajā rindā esošo nolaižamo sarakstu C2:C5 jutīgo diapazonu nomainiet ar savu.

Variants 2. Vertikāls

Tas pats, kas iepriekšējā versijā, taču jaunās atlasītās vērtības tiek pievienotas nevis pa labi, bet gan apakšā:

Tas tiek darīts tieši tādā pašā veidā, bet apstrādātāja makro kods nedaudz mainās:

Private Sub Worksheet_Change(ByVal Target As Range) kļūdas gadījumā Atsākt Nākamo Ja nekrustojas(Mērķis, Diapazons("C2:F2")) ir nekas un Target.Cells.Count = 1 Tad Application.EnableEvents = False, ja Len(Mērķis.Nobīde (1, 0)) = 0 Tad Target.Offset(1, 0) = Target Citādi Target.End(xlDown).Offset(1, 0) = mērķa beigas, ja Target.ClearContents Application.EnableEvents = patiesās beigas, ja beigu apakšpunkts  

Atkal, ja nepieciešams, šī koda otrajā rindā aizstājiet C2:F2 nolaižamo sarakstu jutīgo diapazonu ar savu.

Variants 3. Ar uzkrāšanos tajā pašā šūnā

Izmantojot šo opciju, uzkrāšana notiek tajā pašā šūnā, kurā atrodas nolaižamais saraksts. Atlasītie elementi ir atdalīti ar jebkuru norādīto rakstzīmi (piemēram, ar komatu):

Nolaižamie saraksti zaļajās šūnās tiek izveidoti pilnīgi standarta veidā, tāpat kā iepriekšējās metodēs. Viss darbs atkal tiek veikts ar makro lapas modulī:

Privātā apakšlapas_izmaiņa (ByVal Target As Range) kļūdas gadījumā Atsākt nākamo Ja nekrustojas(Mērķis, Diapazons("C2:C5")) ir nekas un Target.Cells.Count = 1 Tad Application.EnableEvents = Viltus newVal = mērķa Application.Undo oldval = Target If Len(oldval) <> 0 Un oldval <> newVal then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 then Target.ClearContents Application.EnableEvents = True End If Beigt apakš  

Ja vēlaties, atdalīšanas rakstzīmi (komatu) koda 9. rindā varat aizstāt ar savu (piemēram, atstarpi vai semikolu).

  • Kā izveidot vienkāršu nolaižamo sarakstu Excel lapas šūnā
  • Nolaižamais saraksts ar saturu
  • Nolaižamais saraksts ar pievienotajām trūkstošajām opcijām
  • Kas ir makro, kā tos lietot, kur ievietot makro kodu programmā Visual Basic

Atstāj atbildi