Excel - Luo alasvetovalikko tietyissä soluissa
Ongelma
Halusin luoda pudotusluettelon Sheet2: n tiedoista. Olen kokeillut seuraavia koodeja, mutta tulos näyttää olevan virheellinen. Pudotusluettelossa lueteltujen tietojen sijaan pudotusvalikossa oli tiedot Sheet1: stä (joka on minun kohdesivuni).
Haluaisin myös, että pudotusvalikko tietyistä soluista, joissa minulla on tietoa soluista, eli pudotusvalikko pitäisi olla taulukon 1 sarakkeessa F, jossa on tietoja taulukon 1 sarakkeesta E ja toista loppuun loppuun asti. lista.
Tähän liitetään tiedosto, jota työskentelen täällä.
Ratkaisu
Luodat validointiluettelon toisesta työpisteestä, jossa on kyseisen validointiluettelon alueen nimi (taulukossa 2)
ja käytä sitä kaavana
Yritin muokata makroasi häiritsemättä paitsi yhden tai kahden rivin muuttamisen
Olen antanut alueen nimen "rangename". voit muuttaa sitä makrossa
Tarvittaessa näytä sitä hieman enemmän.
Sub Dropdown () Dim x As Long, y As Long Dim objektiivi Asetusalue Dim objDataRangeStart As Range Dim objDataRangeEnd As Range Alue Range String '>> Aseta alue valituille tiedoille wsSourceList = Levyt ("Sheet2") Aseta wsDestList = Sheets ("Sheet1") Aseta objDataRangeStart = wsSourceList.Cells (1, 2) 'Aloitusalue pudotusluettelon merkinnöille Aseta objDataRangeEnd = wsSourceList.Cells (6, 2)' Loppurivin pudotusvalikosta MsgBox objDataRangeStart MsgBox objDataRangeEnd '==== ============= Työarkkien kanssa ("Sheet2") Alue (objDataRangeStart, objdatarangaeend) .Name = "rangename" Lopeta "=============== ====== '>> Validation asetettu pakolliseen soluun' Set objCell = wsDestList.Cells (8, 4) 'avattavan luettelon sijainti' MsgBox objCell x = 4 y = 6 Do Set objCell = wsDestList.Cells (x, y) 'Avattavan luettelon sijainti objCell.Validation .Delete' .Add Type: = xlValidateList, AlertStyle: = xlValidAlertStop, Operator: = xlBetween, Formula1: = "=" & objDataRangeStart.Address & ":" & objDataRangeEnd. Osoite '= ========================================== .Lisätyyppi: = xlValidateList, AlertStyle : = xlValidAlertStop, operaattori: = _ xlBetween, kaava1: = "= alueenimi" '================================ ================================ .IgnoreBlank = True .InCellDropdown = True .ErrorTitle = "Varoitus" .ErrorMessage = " Valitse arvo valitun solun käytettävissä olevasta luettelosta. " .ShowError = True End, jossa x = x + 1 'y = y + 1 silmukka, kunnes x = 51 loppuun
Kiitos venkat1926 tästä vinkistä.