Excel - Skapa nedrullningslista på vissa celler
Problem
Jag ville skapa en nedrullningslista från data i Sheet2. Jag har provat följande koder men resultatet verkar vara felaktigt. I stället för uppgifterna i Ark2 som anges i rullgardinsmenyn, innehåller listrutan data från Sheet1 (vilket är mitt destinationsblad).
Jag skulle också vilja ha nedrullningslistan på vissa celler där jag har information om cellerna före, dvs nedrullningslistan ska finnas i kolumn F i Sheet1 där det finns information om kolumn E av ark1 och upprepa till slutet av listan.
Härmed bifogas filen jag jobbar med här.
Lösning
Du skapar en valideringslista från en annan arbetsgrupp ge ett intervallnamn till den valideringslistan (i ark2)
och använd det som formeln
Jag försökte ändra ditt makro utan att störa förutom att ändra en eller två linjer
Jag har angivit serienamn som "rangename". Du kan ändra det i makroet
Om nödvändigt tweak det lite mer.
Sub Dropdown () Dim x Så länge, y Så länge Dim objCell Som Range Dim objDataRangeStart Som Range Dim ObjDataRangeEnd Som Range Dim Rangename As String '>> Ange raden för Giltig Dataset wsSourceList = Ark ("Sheet2") Ange wsDestList = Ark ("Sheet1") Ställ objDataRangeStart = wsSourceList.Cells (1, 2) 'Startintervall för listrutor listor Ange objDataRangeEnd = wsSourceList.Cells (6, 2)' Slutintervall för listrutan listrutor MsgBox objDataRangeStart MsgBox objDataRangeEnd '==== ========================================================================================================================================== ====== '>> Ange validering på obligatorisk cell' Ange objCell = wsDestList.Cells (8, 4) 'Plats för dropdownlistan' MsgBox objCell x = 4 y = 6 Ange objCell = wsDestList.Cells (x, y) 'Placering av listrutan Med objCell.Validation .Delete' .Add Typ: = xlValidateList, AlertStyle: = xlValidAlertStop, Operator: = xlBetween, Formula1: = "=" & objDataRangeStart.Address & ":" & objDataRangeEnd. Adress '= ====================================== .Add Typ: = xlValidateList, AlertStyle : = xlValidAlertStop, Operator: = _ xlBetween, Formula1: = "= rangename" '================================= =============================================================================================================================================== Var god välj ett värde från listan tillgänglig i den valda cellen. " .ShowError = Sann ände med x = x + 1 'y = y + 1 Loop till x = 51 Slut Del
Tack till venkat1926 för detta tips.