Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Excel] Validatie lijst

Pagina: 1
Acties:

  • Stampertjen
  • Registratie: Oktober 2006
  • Laatst online: 13-11 22:04
Medetweakers

ik ben momenteel bezig met een excel sheet te maken, maar ik zit met een probleem waar ik niet aan uitkomt. Al zitten googlen maar niets gevonden die gelijkaardig is met wat ik wil. (of ik moet echt wel verkeerde zoeksuggesties gebruiken 8)7 )

Situatie is als volgt:
Ik heb een eerste kolom met posities en een tweede met artikels. Via een validatielijst kun je kiezen uit alle posities. Waarna je in een 2de validatielijst kunt kiezen uit de artikels indien de positie in validatielijst 1 "SR" in de naam heeft. Als er geen "SR" in de naam staat dan zou er enkel n.v.t. moeten staan

Het zoeken en aanpassen van de keuzes in de 2de validatielijst afhankelijk van wat je hebt gekozen in lijst 1 is geen probleem. Het probleem is dat wanneer je de positie terug verandert de artikel lijst zich niet update. (de laatst gekozen waarde blijft staan)
Ook hebt je een dropdown menu bij n.v.t. terwijl ik dit liever gewoon als tekst zou willen.

Ben nu al een tijdje hierop aan het zoeken en beter dan dit krijg ik het niet. Ik vermoed dat dit ook niet met functies op te lossen is en dat VBA nodig zal zijn.

Bijlage

  • Belindo
  • Registratie: December 2012
  • Laatst online: 08:30

Belindo

▶ ─🔘─────── 15:02

Dus je wilt cel E3 leeg hebben als je cel D2 veranderd?

Plaats dit in de 'code' van Blad1:

Visual Basic .NET:
1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$2" Then
        Range("E3").Value = ""
    End If
End Sub

Coding in the cold; <brrrrr />


  • Stampertjen
  • Registratie: Oktober 2006
  • Laatst online: 13-11 22:04
Dat doet inderdaad wat ik wil. Heb totaal geen kennis van VBA dus verder dan een leeg codeblad ging
ik niet geraken.
Is het trouwens mogelijk om iets in de genre van als D2 "SR"bevat dan in E3 value een validatation list en anders is E3 value "n.v.t."?

Edit:
Zoals het hier op tweakers hoor ben ik met je basis en google aan de slag gegaan en ben ik bij dit uitgekomen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Worksheet_Change(ByVal Target As Range)
    If InStr(Range("D2"), "SR") > 0 Then
        Range("E3").Select
            With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
            Formula1:="=$B$2:$B$4"
            .IgnoreBlank = True
            .InCellDropdown = True
            End With
    Else
        Range("E3").Validation.Delete
        Range("E3").Value = "n.v.t."
    End If
End Sub


Aangezien dit het eerste is dat ik doe in vba had ik graag mening gehad.

[ Voor 58% gewijzigd door Stampertjen op 15-12-2014 20:57 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

De code loopt nu volledig af bij elke wijziging. Dat is meestal niet handig. Gebruikelijk is om eerst te controleren of de gewijzigde cel idd de cel is waarin je geinteresseerd bent dat hij wijzigt.
Dat kan met if target.adress="D2" of if not (intersect(target,range("D2")) Is Nothing)

Als je zo eenmaal hebt vastgesteld dat het cel D2 is die gewijzigd is kun je ook verder werken met het target-object ipv range("D2"). OOk makkelijk als er meer cellen zijn die je moet controleren. :)

regel 3: select: typisch iets wat de macrorecorder er voor je infietst om verder te gaan met selection. Nergens goed voor en wil je meestal ook niet. Ipv daarvan volstaat `with range("E3").validation` etc...

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Logico
  • Registratie: September 2013
  • Nu online
Getrapte validatie is eventueel ook mogelijk zonder VBA: http://www.exhelp.be/algemeen/1622