Jeg har et range af celler som kan indeholde værdierne "blank, 10, 20, 30, 40, 50, 60, 70, 80, 90" Alt efter værdien af cellerne skal der i cellen til højre være en datavalideringsliste udformet som en rullemenu med xx værdier på. Værdierne til datavalideringslisten er oplistet i et andet ark - så det er nogenlunde denne streng der skal sendes til den celle der skal have en ny valideringsliste: .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= xlBetween, Formula1:="=ARK1!$C$598:$C$607" Ranget af cellerne er alle placeret i samme kollonne i mit regneark men består af ca 50 grupper af celler med tomme celler imellem hver gruppe (jeg har nok ca. 1.000 linier i regnearket men kun 500 af dem som kan indeholde ovenstående værdier) Default værdien for cellerne er "blank". Når en bruger så ændrer cellen til en anden værdi fx 10 er det at valideringslisten til højre for den ændrede celle skal ændres. De 500 celler der ikke har en af værdierne vil der ikke kunne tastes i - men de kan indeholde andre værdier men de kunne dog defineres, hvis relevant. Jeg har overvejet om funktionen worksheet_change ville kunne anvendes. Men dels bruger jeg den i 2 andre ranges i forvejen - og dels har jeg ikke nok styr på funktionen til at vide om jeg kan få den til at ændre alene i det felt til højre for det ændrede felt. For at undgå konflikt med den nuværende kode i worksheet_change er den gengivet i simplificeret form her: Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Address = "$L$5" Then Select Case Target Case Is >= 25 MsgBox "Du har tastet et for højt nummer. Prøv igen" Case Else Call pdf_funktion End Select End If If Intersect(Target, Range("d8:d24")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub Call Filtrer End Sub Kan det mon lade sig gøre at lave en VBA kode som kan klare det for mig ?
|