Excel - creați lista verticală pe anumite celule

Problema

Am vrut să creez o listă derulantă din datele din Sheet2. Am încercat următoarele coduri, dar rezultatul pare să fie incorect. În loc de datele din Sheet2 listate în lista derulantă, lista derulantă conținea datele din Sheet1 (care este foaia mea de destinație).

De asemenea, mi-ar plăcea să fiu lista drop-down pe anumite celule unde am informații despre celule înainte, adică lista drop-down ar trebui să fie în Coloana F a Sheet1 unde există informații despre Coloana E a Sheet1 și se repetă până la sfârșitul lista.

Aici este atașat dosarul pe care lucrez aici.

Soluţie

Creați o listă de validare de la ALTĂ LUCRĂTOARE dați un nume de domeniu acelei liste de validare (în foaia2)

și utilizați ca formula

Am încercat să modific macro-ul dvs. fără a deranja, cu excepția schimbării uneia sau a două linii

Am dat numele de domeniu ca "rangename". îl puteți modifica în macro

Dacă este necesar, tweak puțin mai mult.

 Sub Dropdown () Dim x Dupa lungime, y In lungime Dim objCell ca dimensiune Dim objDataRangeStart ca dimensiune Dim objDataRangeEnd ca dimensiune Dim rangedame ca String '>> Setarea intervalului pentru setul de date valide wsSourceList = Sheets ("Sheet2") Set wsDestList = Sheets ("Sheet1") Setați objDataRangeStart = wsSourceList.Cells (1, 2) 'Gama de început pentru intrările în lista derulantă Set objDataRangeEnd = wsSourceList.Cells (6, 2) ============= Cu foi de lucru ("Sheet2") Gama (objDataRangeStart, objdatarangaeend) .Name = "rangename" Sfarsit cu '=============== ====== '>> Setați validarea pe celula obligatorie' Setul objCell = wsDestList.Cells (8, 4) 'Locația listei derulante' MsgBox objCell x = 4 y = 6 Setați objCell = wsDestList.Cells, y) 'Localizarea listei de dropdown Cu objCell.Validation .Delete' .Add Type: = xlValidateList, AlertStyle: = xlValidAlertStop, Operator: = xlBetween, Formula1: = "=" & objDataRangeStart.Address & ":" & objDataRangeEnd. Adresa '= ========================================== Tipul adăugat: = xlValidateList, AlertStyle : = xlValidAlertStop, Operator: = _xlBetween, Formula1: = "= rangename" '================================ =================================IgnoreBlank = Adevărat .InCellDropdown = Adevărat .ErrorTitle = "Avertisment" .ErrorMessage = " Selectați o valoare din lista disponibilă în celula selectată. " .ShowError = True End Cu x = x + 1 'y = y + 1 Buclă până la x = 51 End Sub 

Vă mulțumim pentru venkat1926 pentru acest sfat.

Articolul Precedent Articolul Următor

Cele Mai Importante Sfaturi