• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Automatisch andere drop downlijst afhankelijk van cel waarde

Status
Niet open voor verdere reacties.

galatea1986

Gebruiker
Lid geworden
15 nov 2010
Berichten
8
Goede avond alle,

Ik ben een lijst aan het maken voor de boekhouding, dat doe ik al jaren via excel. nu maak ik een nieuwe slankere versie maar loop tegen een hardnekkig probleem aan.

als een waarde negatief is wil een drop downlijst gebruiken die voor negatieve waarde zijn, is de waarde positief dan de drop downlijst gebruiken voor positief

stel: "werkblad blad 1."
cel B6 is negatief
dan "werkblad lijst"
dan drop downlijst "negatief blad 1"
in "werkblad blad 1" cel C6 laten verschijnen.

als B6 positief is dan "positief blad 1" in cel C6 laten verschijnen

ik heb het geprobeerd met VBA met de IF_then functie maar ik kom er niet uit, wie kan het voor mij maken
 

Bijlagen

Zet deze eens achter je werkblad 1

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
a = IIf(Target > 0, "=Lijst!$B$2:$B$9", "=Lijst!$A$2:$A$19")
    With Target.Offset(, 1).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=a
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
End If
End Sub
 
Laatst bewerkt:
gelukt

excuus voor de late reactie, zo te zie werkt het. kan je hem voor mij kort uitleggen hoe die werk.
waar wat voor is zodat ik hem makkelijker kan aanpassen?


in ieder geval bedankt voor je snelle reactie en je oplossing
 
Mooizo, is dit voldoende?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then                           'Checken of je in kolom B zit
a = IIf(Target > 0, "=Lijst!$B$2:$B$9", "=Lijst!$A$2:$A$19")                ' a krijgt de verwijzing naar positieve of negatieve dropdown, afhankelijk van de waarde van de cel die je verandert (Target)
    With Target.Offset(, 1).Validation                                                      'cel naast targetcel(cel die je aanpast) krijgt validatie toegekend
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=[COLOR="#FF0000"]a[/COLOR]   'de a hangt dus af van de target 
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
End If
End Sub
 
Ja deze is duidelijk, ongeveer wat ik verwachte. Hij hoeft van mij bij afwijkende waarde geen melding te geven. Dus die zet ik dan nog naar false. Maar zo kan ik hem uitstekend aanpassen.

Heel erg bedankt.
Ik dacht er makkelijk vanaf te komen met if_then functie haha
 
weet je per toeval ook hoe ik er nog een dropdown bij kan maken?
als ik in C een waarde kies dat er dan een andere dropdown bij komt of leeg blijft?

stel: B cel is negatief
C cel kies ik Abonnement
dan D cel een dropdown lijst krijg , kies ik in C cel wat anders dan niets.

ik heb dit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Not Intersect(Target, Range("C:C")) Is Nothing Then

a = IIf(Target > 0, "=Lijst!$B$2:$B$9", "=Lijst!$A$2:$A$19")
b = IIf(Target > Abonnement, "=Lijst!$A$26:$A$29", "=Lijst!C1")

With Target.Offset(, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=a
.InCellDropdown = True
.ShowInput = True
.ShowError = True

With Target.Offset(, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=b
.InCellDropdown = True
.ShowInput = True
.ShowError = True





End With

End With

End Sub
 
Zonder Vba,

=als(b6>0;negatief;positief)
 
Ik heb hier een oplossing voor je zonder VBA maar met Namen. Van je dropdown lijsten heb ik tabellen gemaakt zodat deze automatisch updaten in je validatie als de lijst groter of kleiner wordt.
Op blad 1 is het voorbeeld weergegeven.
 

Bijlagen

als eerste bedankt, ik heb hem even getest.
als ik bij gegevensvalidatie kijk om de stop functie uit te zetten kan ik niets meer.
krijg dan de melding : de lijst met brongegevens moet een lijst met scheidingtekens zijn of een verwijzingg naar één rij of één kolom. dat is dan alleen als C6 niet op abonnementen staat. andere waarde kunnen dan niet ingevuld worden.
zet ik het eerst terug op abonnementen en dan gegevens validatie dan kan ik alles weer aanpassen.
mocht ik ooit nog meer validaties toepassen, dus bijvoorbeeld achter auto dan wordt het weer "maken obv selectie en dat wilde ik dus niet meer.

vandaar dat ik overgegaan was naar VBA. ik heb het alleen al 4 jaar niet meer gebruikt dus ik bak er niet meer van.
ik dacht dat dat makkelijker uitbreiden en aan te passen was. regel toevoegen als ik achter de C6 nog een lijst wilde toevoegen.

dus C6 abonnement=> lijst met netflix, disney+, etc
C6 auto=> lijst met tanken, grote beurt, tanken etc

etc etc
en dan in VBA paar regels toevoegen en weer verder.

code:
If Not Intersect(Target, Range("C:C")) Is Nothing Then
b = IIf(Target="abonnement, "=Lijst!$A$24:$A$27", "(''))
With Target.Offset(, 1).Validation

If Not Intersect(Target, Range("C:C")) Is Nothing Then
c = IIf(Target="Auto, "=Lijst!$X$XX:$X$XX", "(''))
With Target.Offset(, 1).Validation

beetje dat idee had ik er achter.
 
Begin met het verwijderen van alle samengevoegde cellen; daarna wordt het (Excel)leven een stuk eenvoudiger.
En VBA houdt er al helemaal niet van.

gebruik per werkblad: (mutatis mutandis)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B6:B806")) Is Nothing Then Target.Offset(, 1).Validation.Modify , , , "=B" & IIf(Target > 0, "P_2", "N_2")
End Sub
 

Bijlagen

Laatst bewerkt:
bedankt voor de reactie,

deze code begrijp ik niet helemaal, en ik kom eigenlijk ook niet dichter bij met wat ik wil. ik denk dat ik hem maar zo laat en geen 2de drop-downlijst maakt afhankelijk van de eerste in VBA.
Of gewoon helemaal niet. De mooiste optie is zoals in de eerste reactie en daar op voortborduren maar nu niet kom ik er niet verder in uit. de 2de lijst krijg ik niet tevoorschijn.

alle bedankt voor de hulp en ideeen!
 
Voortbordurend op de eerste oplossing
Wel de samengevoegde cellen verwijderd in dit voorbeeld.
 

Bijlagen

super bedankt, dat is hem helemaal. ga de layout aanpassen en dan is het helemaal zoals ik het wilde.

bedankt voor de tijd en moeite.


greetz G
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan