Көп таңдауы бар ашылмалы тізім

Excel парағындағы классикалық ашылмалы тізім керемет, бірақ ол ұсынылған жиынтықтан тек бір опцияны таңдауға мүмкіндік береді. Кейде бұл дәл сіз қалаған нәрсе, бірақ пайдаланушы таңдау мүмкіндігін қажет ететін жағдайлар бар кейбір тізімдегі элементтер.

Осындай көп таңдаулы тізімнің бірнеше типтік орындалуын қарастырайық.

1-параметр. Көлденең

Пайдаланушы ашылмалы тізімнен элементтерді бір-бірлеп таңдайды және олар өзгертілетін ұяшықтың оң жағында автоматты түрде көлденеңінен тізімде көрсетіледі:

Бұл мысалдағы C2:C5 ұяшықтарындағы ашылмалы тізімдер стандартты түрде жасалған, яғни

  1. C2:C5 ұяшықтарын таңдаңыз
  2. қойындысы немесе мәзір мәліметтер команда таңдау Деректерді тексеру
  3. ашылған терезеде опцияны таңдаңыз тізім және ауқым ретінде көрсетіңіз қайнар көз A1:A8 тізімі үшін бастапқы деректері бар ұяшықтар

Содан кейін парақ модуліне макрос қосу керек, ол барлық негізгі жұмыстарды орындайды, яғни жасыл ұяшықтардың оң жағына таңдалған мәндерді қосады. Мұны істеу үшін ашылмалы тізімдері бар парақ қойындысын тінтуірдің оң жақ түймешігімен басып, пәрменді таңдаңыз Бастапқы коды. Келесі кодты ашылатын Visual Basic редакторының терезесіне қойыңыз:

Private Sub Worksheet_Change(ByVal мақсатты диапазон ретінде) Қате бойынша Жалғастыру Егер қиылыспаса (Нысана, Ауқым("C2:C5")) Ештеңе емес және Target.Cells.Count = 1 Содан кейін Application.EnableEvents = False, Len(Target.Offset) (0, 1)) = 0 Содан кейін Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Қажет болса, осы кодтың екінші жолындағы C2:C5 ашылмалы тізімдерінің сезімтал ауқымын өзіңіздікімен ауыстырыңыз.

2-параметр. Тік

Алдыңғы нұсқадағыдай, бірақ жаңа таңдалған мәндер оңға емес, төменгі жағына қосылады:

Бұл дәл осылай жасалады, бірақ өңдеуші макрокоды аздап өзгереді:

Private Sub Worksheet_Change(ByVal мақсатты ауқым ретінде) Қате бойынша Жалғастыру Егер қиылыспаса (Нысана, Ауқым("C2:F2")) Ештеңе емес және Target.Cells.Count = 1 Содан кейін Application.EnableEvents = False, Len(Target.Offset) (1, 0)) = 0 Содан кейін Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Қайтадан, қажет болса, осы кодтың екінші жолындағы C2:F2 ашылмалы тізімдерінің сезімтал ауқымын өзіңіздікімен ауыстырыңыз.

Нұсқа 3. Бір ұяшықта жинақтаумен

Бұл опцияда жинақ ашылмалы тізім орналасқан ұяшықта орын алады. Таңдалған элементтер кез келген берілген таңбамен бөлінген (мысалы, үтір):

Жасыл ұяшықтардағы ашылмалы тізімдер алдыңғы әдістердегідей толығымен стандартты түрде жасалады. Барлық жұмыс қайтадан парақ модуліндегі макрос арқылы орындалады:

Private Sub Worksheet_Change(ByVal мақсатты ауқым ретінде) Қате бойынша Жалғастыру Егер қиылыспаса (Нысана, ауқым("C2:C5")) Ештеңе емес және Target.Cells.Count = 1 Содан кейін Application.EnableEvents = False newVal = Мақсатты Application.Undo oldval = Мақсат, егер Len(oldval) <> 0 Ал oldval <> newVal Содан кейін Мақсат = Мақсат & "," & newVal Else Мақсат = newVal Соңы Егер Len(newVal) = 0 болса, онда Target.ClearContents Application.EnableEvents = Шындық аяқталса, Аяқтау қосалқысы  

Қаласаңыз, кодтың 9-жолындағы бөлгіш таңбаны (үтір) өз таңбасымен (мысалы, бос орын немесе нүктелі үтір) ауыстыруға болады.

  • Excel парағындағы ұяшықта қарапайым ашылмалы тізімді қалай жасауға болады
  • Мазмұны бар ашылмалы тізім
  • Жетіспейтін опциялары қосылған ашылмалы тізім
  • Макростар дегеніміз не, оларды қалай қолдану керек, Visual Basic бағдарламасында макрокодты қайда енгізу керек

пікір қалдыру