Excel - Bazı hücrelerde açılır liste oluştur

Konu

Sayfa2'deki verilerden bir açılır liste oluşturmak istedim. Aşağıdaki kodları denedim, ancak sonuç yanlış görünüyor. Aşağı açılan listede listelenen Sayfa2'deki veriler yerine, aşağı açılan liste Sayfa1'deki (hedef sayfam) verileri içeriyordu.

Ayrıca, daha önce hücreler hakkında bilgi sahibi olduğum bazı hücrelerde açılır listeye sahip olmak istiyorum, yani açılır listenin Sayfa1'deki F Sütununda olması gerekir, burada Sayfa1'deki Sütun 1'de bilgi bulunur ve sonuna kadar tekrarlayın. liste.

Ekli burada üzerinde çalışıyorum dosyadır.

Çözüm

Başka bir WORKSHEET'ten bir doğrulama listesi oluşturursunuz, bu doğrulama listesine bir aralık adı verin (sayfa2'de).

ve bunu formül olarak kullanın.

Bir veya iki satırı değiştirmek dışında makronuzu rahatsız etmeden değiştirmeye çalıştım

"Rangename" olarak aralık adı verdim. makroda değiştirebilirsiniz

Gerekirse biraz daha tweak.

 Alt Açılan Alt () Dim x Uzun, y Uzun Dim objCell Aralık Olarak Nesne Dim objDataRangeStart Aralık Olarak Dim objDataRangeEnd Aralık Olarak Dim Dim Alan Adı Dize '>> Ayarla Geçerli Veri Kümesini Ayarla wsSourceList = Sheets ("Sheet2") wsDestList = Sayfaları Ayarla ("Sayfa1") Set objDataRangeStart = wsSourceList.Cells (1, 2) 'Açılır liste girişleri için başlangıç ​​aralığı ayarla objDataRangeEnd = wsSourceList.Cells (6, 2)' Açılır liste listesi girişleri için bitiş aralığı MsgBox objDataRangeStart MsgBox objDataRangeEnd '== ============ Çalışma Sayfalarıyla ("Sayfa2") Aralık (objDataRangeStart, objdatarangaeend) .Name = "rangename" ile Sona Dön '===================== ====== '>> Gerekli Hücreye Doğrulamayı Ayarla' Set objCell = wsDestList.Cells (8, 4) 'Açılır listenin yeri' MsgBox objCell x = 4 y = 6 objCell Ayarla = wsDestList.Cells (x, y) 'Açılan listenin konumu objCell.Validation ile .Delete' .Add Türü: = xlValidateList, AlertStyle: = xlValidAlertStop, Operator: = xlBetween, Formula1: "=" & objDataRangeStart.Address & ":" Adres '= =========================================== .Add Türü: = xlValidateList, AlertStyle : = xlValidAlertStop, Operator: = _ xlBetween, Formula1: = "= rangename" '============================================ ================================= ..IgnoreBlank = Doğru .InCellDropdown = Doğru .ErrorTitle = "Uyarı" .ErrorMessage = " Lütfen seçilen hücrede mevcut olan listeden bir değer seçin. " .ShowError = x = x + 1 'y ile Gerçek Son = y = y + 1 x = 51 End Altına Kadar Döngü 

Bu ipucu için venkat1926'ya teşekkür ederiz.

Önceki Makale Sonraki Makale

En Ipuçları