Excel - Utwórz rozwijaną listę na niektórych komórkach

Kwestia

Chciałem utworzyć listę rozwijaną z danych w Sheet2. Próbowałem następujących kodów, ale wynik wydaje się niepoprawny. Zamiast danych w Arkuszu2 wymienionych na liście rozwijanej, lista rozwijana zawierała dane z Arkusza1 (który jest moim arkuszem docelowym).

Ponadto chciałbym mieć listę rozwijaną na niektórych komórkach, w której mam informacje o komórkach wcześniej, tj. Lista rozwijana powinna znajdować się w kolumnie F arkusza 1, gdzie znajdują się informacje o kolumnie E arkusza 1 i powtarzać do końca Lista.

Załączony jest tutaj plik, nad którym pracuję.

Rozwiązanie

Tworzysz listę walidacji z INNEJ WARSZTATU, podaj nazwę zakresu tej liście walidacyjnej (w arkuszu2)

i używaj tego jako wzoru

Próbowałem zmodyfikować makro bez przeszkadzania, z wyjątkiem zmiany jednej lub dwóch linii

Podałem nazwę zakresu jako „nazwa-rang”. możesz go zmienić w makrze

Jeśli to konieczne, popraw trochę więcej.

 Sub Dropdown () Dim x As Long, y Jak Long Dim objCell As Range Dim objDataRangeStart As Range Dim objDataRangeEnd As Range Dim nazwa_pliku As String '>> Ustaw zakres dla poprawnego zestawu danych wsSourceList = Sheets ("Sheet2") Ustaw wsDestList = Sheets ("Sheet1") Set objDataRangeStart = wsSourceList.Cells (1, 2) 'Zakres początkowy dla pozycji listy rozwijanej Set objDataRangeEnd = wsSourceList.Cells (6, 2)' Zakres końcowy dla pozycji listy rozwijanej MsgBox objDataRangeStart MsgBox objDataRangeEnd '==== ============= Z arkuszami roboczymi ("Arkusz2") Zakres (objDataRangeStart, objdatarangaeend) .Name = "nazwa_rangi" Koniec z '=============== ====== '>> Ustaw walidację na wymaganej komórce' Set objCell = wsDestList.Cells (8, 4) 'Lokalizacja listy rozwijanej' MsgBox objCell x = 4 y = 6 Do Set objCell = wsDestList.Cells (x, y) „Lokalizacja listy rozwijanej Z objCell.Validation .Delete” .Dodaj typ: = xlValidateList, AlertStyle: = xlValidAlertStop, Operator: = xlBetween, Formula1: = "=" & objDataRangeStart.Address & ":" & objDataRangeEart. Adres '= ========================================== .Add Type: = xlValidateList, AlertStyle : = xlValidAlertStop, Operator: = _ xlBetween, Formula1: = "= rangename" '================================ ================================ .IgnoreBlank = True .InCellDropdown = True .ErrorTitle = "Ostrzeżenie" .ErrorMessage = " Wybierz wartość z listy dostępnej w wybranej komórce. ” .ShowError = Prawdziwy koniec z x = x + 1 'y = y + 1 pętla do x = 51 koniec sub 

Dzięki venkat1926 za tę wskazówkę.

Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki