Ko'p tanlovli ochiladigan ro'yxat

Excel varag'idagi klassik ochiladigan ro'yxat juda yaxshi, lekin u taqdim etilgan to'plamdan faqat bitta variantni tanlash imkonini beradi. Ba'zan bu siz xohlagan narsadir, lekin foydalanuvchi tanlash imkoniyatiga ega bo'lishi kerak bo'lgan holatlar mavjud bir qancha ro'yxatdagi elementlar.

Keling, bunday ko'p tanlovli ro'yxatning bir nechta tipik ilovalarini ko'rib chiqaylik.

Variant 1. Gorizontal

Foydalanuvchi ochiladigan roʻyxatdagi elementlarni birma-bir tanlaydi va ular oʻzgartirilayotgan katakning oʻng tomonida avtomatik ravishda gorizontal roʻyxatda koʻrinadi:

Ushbu misoldagi C2:C5 kataklardagi ochiladigan ro'yxatlar standart tarzda yaratilgan, ya'ni

  1. C2:C5 katakchalarini tanlang
  2. yorliq yoki menyu ma'lumotlar jamoani tanlang Ma'lumotlarni tasdiqlash
  3. ochilgan oynada variantni tanlang ro'yxat va diapazon sifatida belgilang manba A1:A8 ro'yxati uchun manba ma'lumotlari bo'lgan hujayralar

Keyin varaq moduliga makrosni qo'shishingiz kerak, u barcha asosiy ishlarni bajaradi, ya'ni yashil kataklarning o'ng tomoniga tanlangan qiymatlarni qo'shing. Buni amalga oshirish uchun ochiladigan ro'yxatlar bilan varaq yorlig'ini o'ng tugmasini bosing va buyruqni tanlang Manba kodi. Ochilgan Visual Basic muharriri oynasiga quyidagi kodni joylashtiring:

Private Sub Worksheet_Change(ByVal Target As Range) Xato Agar Kesishmasa Keyingi Davom eting(Nishon, Diapazon("C2:C5")) Hech narsa va Target emas.Cells.Count = 1 Keyin Application.EnableEvents = False If Len(Target.Offset) (0, 1)) = 0 Keyin Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Agar kerak bo'lsa, ushbu kodning ikkinchi qatoridagi C2: C5 ochiladigan ro'yxatlarining sezgir diapazonini o'zingiz bilan almashtiring.

Variant 2. Vertikal

Oldingi versiyada bo'lgani kabi, lekin yangi tanlangan qiymatlar o'ngga emas, balki pastga qo'shiladi:

Bu xuddi shu tarzda amalga oshiriladi, lekin ishlov beruvchining makro kodi biroz o'zgaradi:

Private Sub Worksheet_Change(ByVal Target As Range) Xato Agar Kesishmasa Keyingi Davom eting(Nishon, Diapazon("C2:F2")) Hech narsa va Target emas.Cells.Count = 1 Keyin Application.EnableEvents = False If Len(Target.Offset) (1, 0)) = 0 Keyin Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Yana, agar kerak bo'lsa, ushbu kodning ikkinchi qatorida C2: F2 ochiladigan ro'yxatlarining sezgir diapazonini o'zingizniki bilan almashtiring.

Variant 3. Xuddi shu hujayrada to'planish bilan

Ushbu parametrda to'planish ochiladigan ro'yxat joylashgan bir xil katakda sodir bo'ladi. Tanlangan elementlar har qanday berilgan belgi bilan ajratiladi (masalan, vergul):

Yashil hujayralardagi ochiladigan ro'yxatlar avvalgi usullarda bo'lgani kabi butunlay standart tarzda yaratilgan. Barcha ishlar yana varaq modulidagi makros yordamida amalga oshiriladi:

Private Sub Worksheet_Change(ByVal Target As Range) Xatoda Davom eting Kesishmasa (Nishon, Diapazon("C2:C5")) Hech narsa va Target emas.Cells.Count = 1 Keyin Application.EnableEvents = False newVal = Target Application.Undo oldval = Maqsad Agar Len(oldval) <> 0 Va oldval <> newVal Keyin Nishon = Target & "," & newVal Else Maqsad = newVal End Agar Len(newVal) = 0 bo'lsa, Target.ClearContents Application.EnableEvents = True End If End Sub  

Agar xohlasangiz, kodning 9-qatoridagi ajratuvchi belgini (vergul) o'zingiznikiga almashtirishingiz mumkin (masalan, bo'sh joy yoki nuqtali vergul).

  • Excel varaqlari katakchasida oddiy ochiladigan ro'yxatni qanday yaratish mumkin
  • Tarkib bilan ochiladigan ro'yxat
  • Yo'qolgan variantlar qo'shilgan ochiladigan ro'yxat
  • Makroslar nima, ulardan qanday foydalanish kerak, Visual Basic dasturida makro kodni qayerga kiritish kerak

Leave a Reply