Listahan ng dropdown na may multi-select

Ang klasikong drop-down na listahan sa isang Excel sheet ay mahusay, ngunit pinapayagan ka lamang nitong pumili ng isang opsyon mula sa ipinakita na set. Minsan ito mismo ang gusto mo, ngunit may mga sitwasyon kung saan kailangang makapili ang user ilan mga elemento mula sa listahan.

Tingnan natin ang ilang tipikal na pagpapatupad ng naturang multi-select na listahan.

Pagpipilian 1. Pahalang

Ang user ay pumipili ng mga item mula sa drop-down na listahan nang paisa-isa, at lumilitaw ang mga ito sa kanan ng cell na binago, awtomatikong nakalista nang pahalang:

Ang mga drop-down na listahan sa mga cell C2:C5 sa halimbawang ito ay nilikha sa karaniwang paraan, ibig sabihin

  1. piliin ang mga cell C2:C5
  2. tab o menu data pumili ng isang pangkat Pagpapatunay ng Data
  3. sa window na bubukas, pumili ng opsyon listahan at tukuyin bilang isang hanay pinagmulan mga cell na may source data para sa listahan A1:A8

Pagkatapos ay kailangan mong magdagdag ng isang macro sa module ng sheet, na gagawin ang lahat ng pangunahing gawain, ibig sabihin, magdagdag ng mga napiling halaga sa kanan ng berdeng mga cell. Upang gawin ito, mag-right-click sa tab na sheet na may mga drop-down na listahan at piliin ang command Source code. I-paste ang sumusunod na code sa window ng editor ng Visual Basic na bubukas:

Private Sub Worksheet_Change(ByVal Target As Range) Sa Error Ipagpatuloy ang Susunod Kung Hindi Mag-intersect(Target, Range("C2:C5")) Ay Wala At Target.Cells.Count = 1 Pagkatapos Application.EnableEvents = False Kung Len(Target.Offset (0, 1)) = 0 Pagkatapos Target.Offset(0, 1) = Target Iba Pang Target.End(xlToRight).Offset(0, 1) = Target End Kung Target.ClearContents Application.EnableEvents = True End Kung End Sub  

Kung kinakailangan, palitan ang sensitibong hanay ng mga drop-down na listahan na C2:C5 sa pangalawang linya ng code na ito ng iyong sarili.

Pagpipilian 2. Patayo

Kapareho ng sa nakaraang bersyon, ngunit ang mga bagong napiling halaga ay hindi idinagdag sa kanan, ngunit sa ibaba:

Ginagawa ito sa eksaktong parehong paraan, ngunit bahagyang nagbabago ang macro code ng handler:

Private Sub Worksheet_Change(ByVal Target As Range) Sa Error Ipagpatuloy ang Susunod Kung Hindi Magsalubong(Target, Range("C2:F2")) Ay Wala At Target.Cells.Count = 1 Pagkatapos Application.EnableEvents = False Kung Len(Target.Offset (1, 0)) = 0 Pagkatapos Target.Offset(1, 0) = Target Iba Pang Target.End(xlDown).Offset(1, 0) = Target End Kung Target.ClearContents Application.EnableEvents = True End Kung End Sub  

Muli, kung kinakailangan, palitan ang sensitibong hanay ng C2:F2 na mga drop-down na listahan ng sarili mo sa pangalawang linya ng code na ito.

Pagpipilian 3. Na may akumulasyon sa parehong cell

Sa opsyong ito, ang akumulasyon ay nangyayari sa parehong cell kung saan matatagpuan ang drop-down na listahan. Ang mga napiling elemento ay pinaghihiwalay ng anumang ibinigay na karakter (halimbawa, isang kuwit):

Ang mga drop-down na listahan sa berdeng mga cell ay nilikha sa isang ganap na karaniwang paraan, tulad ng sa mga nakaraang pamamaraan. Ang lahat ng gawain ay tapos na, muli, sa pamamagitan ng isang macro sa module ng sheet:

Pribadong Sub Worksheet_Change(ByVal Target Bilang Saklaw) Sa Error Ipagpatuloy ang Susunod Kung Hindi Mag-intersect(Target, Range("C2:C5")) Ay Wala At Target.Cells.Count = 1 Pagkatapos Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 At 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  

Kung nais, maaari mong palitan ang separator character (kuwit) sa ika-9 na linya ng code ng iyong sarili (halimbawa, isang puwang o isang semicolon).

  • Paano lumikha ng isang simpleng drop down na listahan sa isang excel sheet cell
  • Listahan ng dropdown na may nilalaman
  • Idinagdag ang listahan ng dropdown na may mga nawawalang opsyon
  • Ano ang mga macro, kung paano gamitin ang mga ito, kung saan ilalagay ang macro code sa Visual Basic

Mag-iwan ng Sagot