Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Opret ny bruger Opret ny bruger  Log ind Log ind


Ændre datavalideringsliste

 Besvar Besvar
Forfatter
P.K.. Se dropdown
Forum Begynder
Forum Begynder


Medlem: 01-07-2017
Status: Offline
Point: 15
Indlæg funktioner Indlæg funktioner   Tak (0) Tak(0)   Citér P.K.. Citér  BesvarSvar Direkte link til dette indlæg Emne: Ændre datavalideringsliste
    Sendt: 25-09-2019 kl. 13:07
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 ?
 
 
 
 
Til top



Til top
P.K.. Se dropdown
Forum Begynder
Forum Begynder


Medlem: 01-07-2017
Status: Offline
Point: 15
Accepteret svar Accepteret svar
Indlæg funktioner Indlæg funktioner   Tak (0) Tak(0)   Citér P.K.. Citér  BesvarSvar Direkte link til dette indlæg Sendt: 27-09-2019 kl. 12:27
Det var meget nemmere end beskrevet - kan løses ved hjælp af afhængige datavalideringslister - dvs. uden VBA
 
Se evt. https://www.contextures.com/xlDataVal02.html for eksempelsamling.
Til top
 Besvar Besvar
  Del emne   

Skift forum Forum tilladelser Se dropdown

© 2010 - 2019 Dansk Regneark Forum - en del af Excel-regneark.dk