• 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.

Cel activeren bij 1 of meerdere juiste waarden

Status
Niet open voor verdere reacties.
Probeer dit eens, de validatiekeuze-naam kun je wel veranderen in de code.
Even alle opties bij langs lopen.
Als RC3 = YES, dan "choose" met validatielijst "=RR"
validatie in RC2 uitgeschakeld.
Als je keuzelijst RC4 veranderd in "=DU",
dan keuzelijst RC2 = "=ES"
anders keuzelijst = "=US"

Als RC3 <> YES dan keuzelijst met "n/a" als tekst.
keuzelijst RC2 = "=DOna"
 

Bijlagen

Beste HSV,

Weer heel erg bedankt voor je hulp! Met deze code is het perfect gelukt :).

Wat ik me nu nog afvroeg, is of het mogelijk is om een cel pas te kunnen selecteren als de voorgaande cel ingevuld is. Daarbij is het eigenlijk de bedoeling om 'choose' wel vast in alle cellen die ingevuld moeten worden te laten staan, maar dat de latere cellen pas kunnen worden geselecteerd als de vorige cel is ingevuld (dus met 1 van de opties i.p.v. choose).

Ik heb nu de volgende code:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Target, Columns("D:G")) Is Nothing Then
   If ActiveCell.Value = "n-a" Then Target.Offset(, 1).Activate
  End If
  If Not Intersect(Target, Columns("H")) Is Nothing Then
   If Not ActiveCell.Value = "YES" Then Target.Offset(, 1).Activate
  End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'Activate Column D if Column C is YES
  If Not Intersect(Target, Columns("C")) Is Nothing Then
     If Target.Value = "YES" Then
    Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RT"
      Target.Offset(, 1) = "choose"
    Else: Target.Offset(, 1) = "n/a"
      Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RTna"
    End If
  End If
'Activate Column E if Column C is YES
  If Not Intersect(Target, Columns("C")) Is Nothing Then
     If Target.Value = "YES" Then
    Target.Offset(, 2).Validation.Modify xlValidateList, , , "=RR"
      Target.Offset(, 2) = "choose"
    Else: Target.Offset(, 2) = "n/a"
      Target.Offset(, 2).Validation.Modify xlValidateList, , , "=RRna"
    End If
  End If
End Sub

Het zou dus de bedoeling zijn om de cel in kolom E pas te kunnen invullen als de cel in kolom D al is ingevuld met alle opties anders dan 'choose', daar 'choose' alleen als info geldt.

Is dit wel mogelijk?
Alvast bedankt in ieder geval!
 
Zoiets?
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Cells(Target.Row, 4) = "choose" Then Application.Goto Cells(Target.Row, 4)
End Sub
 
Zoiets?
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Cells(Target.Row, 4) = "choose" Then Application.Goto Cells(Target.Row, 4)
End Sub

Hoi HSV, zoiets bedoel ik inderdaad.
Het enige probleem dat ik nu nog heb, is dat als er meerdere kolommen met 'choose' zijn en er bij bijv. kolom C al iets gekozen is, en bij kolom D en E 'choose' nog staat, dat ik eerst kolommen D en E in moet vullen. Het is eigenlijk wel de bedoeling dat kolom C nog aangepast kan worden...of maak ik het nu heel moeilijk?

Bedankt!!!
 
Probeer deze eens.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim j As Integer
   For j = 4 To 256
     If Not Intersect(Target, Cells(Target.Row, j)) Is Nothing And _
    Cells(Target.Row, 4) = "choose" Then Application.Goto Cells(Target.Row, 4)
  Next j
End Sub
 
Hoi HSV,

Die code werkt perfect, tenminste voor 1 rij.
Ik heb geprobeerd om dit bij meerdere rijen te laten werken, maar dan gaan de cellen de hele tijd elkaar proberen te selecteren...doe ik iets verkeerd?

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim j As Integer
   For j = 4 To 256
     If Not Intersect(Target, Cells(Target.Row, j)) Is Nothing And _
    Cells(Target.Row, 4) = "choose" Then Application.Goto Cells(Target.Row, 4)
  Next j
   For j = 5 To 256
     If Not Intersect(Target, Cells(Target.Row, j)) Is Nothing And _
    Cells(Target.Row, 5) = "choose" Then Application.Goto Cells(Target.Row, 5)
  Next j
End Sub

Ik begrijp eerlijk gezegd ook de werking van de code niet helemaal, misschien kun je wat toelichten als je wil :)?

EDIT:

Ik vroeg me ook af of de volgende code goed is, of dat dit heel omslachtig werkt? Ik heb niet alles gekopieerd maar een deel ter voorbeeld.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Activate Column D if Column C is YES
  If Not Intersect(Target, Columns("C")) Is Nothing Then
     If Target.Value = "YES" Then
    Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RT"
      Target.Offset(, 1) = "choose"
    Else: Target.Offset(, 1) = "n/a"
      Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RTna"
      Target.Offset(, 2) = "n/a"
      Target.Offset(, 3) = "n/a"
    End If
  End If
'Activate Column E if Column D is other then choose
  If Not Intersect(Target, Columns("D")) Is Nothing Then
     If Target.Value = "choose" Then
    Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RRna"
      Target.Offset(, 1) = "wait"
     ElseIf Target.Value <> "choose" Then
    Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RR"
      Target.Offset(, 1) = "choose"
    Else: Target.Offset(, 1) = "n/a"
      Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RRna"
    End If
  End If
'Activate Column F if Column E is other then choose
  If Not Intersect(Target, Columns("E")) Is Nothing Then
     If Target.Value = "wait" Then
    Target.Offset(, 1).Validation.Modify xlValidateList, , , "=VHna"
      Target.Offset(, 1) = "wait"
     ElseIf Target.Value = "choose" Then
    Target.Offset(, 1).Validation.Modify xlValidateList, , , "=VHna"
      Target.Offset(, 1) = "wait"
     ElseIf Target.Value <> "choose" Then
    Target.Offset(, 1).Validation.Modify xlValidateList, , , "=VH"
      Target.Offset(, 1) = "choose"
    Else: Target.Offset(, 1) = "n/a"
    Target.Offset(, 1).Validation.Modify xlValidateList, , , "=VHna"
    End If
  End If
'Activate Column G if Column C is YES
  If Not Intersect(Target, Columns("C")) Is Nothing Then
     If Target.Value = "YES" Then
    Target.Offset(, 4).Validation.Modify xlValidateList, , , "=IR"
      Target.Offset(, 4) = "choose"
    Else: Target.Offset(, 4) = "n/a"
      Target.Offset(, 4).Validation.Modify xlValidateList, , , "=IRna"
    End If
  End If
'Activate Column I if Column C is YES
  If Not Intersect(Target, Columns("C")) Is Nothing Then
     If Target.Value = "YES" Then
    Target.Offset(, 6).Validation.Modify xlValidateList, , , "=SSno"
      Target.Offset(, 6) = "choose"
    Else: Target.Offset(, 6) = "n/a"
      Target.Offset(, 6).Validation.Modify xlValidateList, , , "=SSna"
    End If
  End If
End Sub

Soms is Excel meerdere keren bezig een cel te wijzigen naar ene bepaalde tekst, wat nogal omslachtig is en ook rekenwerk kost. Is het daarnaast mogelijk om meerdere targets toe te wijzen, bijv. 2 kolommen of 2 offsets?

Even m'n vragen op een rij, sorry dat het er zoveel zijn, ik probeer alles te begrijpen:

[1]Choose selecteren bij de juiste kolom als er meerdere kolommen zijn met choose.
[2]Is de bovenstaande code (na edit) omslachtig, kan deze makkelijker?
[3]Is het mogelijk om meerdere targets toe te wijzen in VBA, bijv. bij kolommen (If Not Intersect(Target, Columns("C,D")) Is Nothing Then of Target.Offset(, 6,7).Validation.Modify xlValidateList,?

Heb werkelijk van alles geprobeerd, gezocht enz. maar kom er niet uit helaas.
 
Laatst bewerkt:
Hoi HSV,

Die code werkt perfect, tenminste voor 1 rij.
Ik begrijp eerlijk gezegd ook de werking van de code niet helemaal, misschien kun je wat toelichten als je wil :)?

Is ook voor één rij bedoeld.

'
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim j As Integer 
   For j = 4 To 256  [COLOR="red"]'kolom 4 t/m 256[/COLOR]     
If Not Intersect(Target, Cells(Target.Row, j)) Is Nothing And _
    Cells(Target.Row, 4) = "choose" Then Application.Goto Cells(Target.Row, 4) [COLOR="red"]'als actievecel niet in één van de  kolommen 4 t/m 256 is als in kolom 4 "choose" staat, dan niets, anders ga naar kolom 4 op die rij.[/COLOR] 
[COLOR="red"]'Ofwel als in kolom 4 "choose" staat, en de actievecel bevindt zich in één van de kolommen 4 t/m 256, dan naar RC4.( de eerste drie kolommen dus buiten beschouwing).[/COLOR] 
  Next j [COLOR="red"]'loopt alle opgegeven kolommen door'[/COLOR]
End Sub

'
Ik vroeg me ook af of de volgende code goed is, of dat dit heel omslachtig werkt? Ik heb niet alles gekopieerd maar een deel ter voorbeeld.

Zou kunnen, maar je hebt zoveel voorwaarden, dat je door de bomen het bos niet meer ziet.

Soms is Excel meerdere keren bezig een cel te wijzigen naar ene bepaalde tekst, wat nogal omslachtig is en ook rekenwerk kost.
Veel voorwaarden maakt veel rekenwerk.

Is het daarnaast mogelijk om meerdere targets toe te wijzen, bijv. 2 kolommen of 2 offsets?
Er is maar één activecel, maar of je bedoeld of je in meerdere cellen iets kan wegschrijven als er aan een voorwaarde wordt voldaan.
'Ja'.
 
Is ook voor één rij bedoeld.
Is het mogelijk om dit voor meerdere rijen te doen? En zo ja, zou je me op weg willen helpen :)?

Zou kunnen, maar je hebt zoveel voorwaarden, dat je door de bomen het bos niet meer ziet.
OK, Heb jij misschien een tip hoe ik het anders kan doen dan?

Er is maar één activecel, maar of je bedoeld of je in meerdere cellen iets kan wegschrijven als er aan een voorwaarde wordt voldaan.
'Ja'.
Ik bedoel eigenlijk dat als als bij bijv. kolom 3 YES wordt ingevuld, dat dan kolom 4 en 5 aangepast worden. Misschien zelfs 3. Heb je misschien ook hier een tip hoe ik dit zou kunnen doen? Ik ben niet echt bekend in VBA.

Zie de quotes. Bedankt voor de uitleg van VBA!
 
Laatst bewerkt:
1; Ik bedoelde eigenlijk één cel.
De code werkt op alle rijen (immers er staat 'TargetRow'), mits je kolommen B & D even voorziet van een validatielijst.
2; Helaas geen idee.
3; Bv:
Code:
 Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Columns(3)) Is Nothing Then
     If Target.Value = "YES" Then
    Target.Offset(, 1).Resize(, 3) = "OK"
  End If
 End If
End Sub
 
1; Ik bedoelde eigenlijk één cel.
De code werkt op alle rijen (immers er staat 'TargetRow'), mits je kolommen B & D even voorziet van een validatielijst.
2; Helaas geen idee.
3; Bv:
Code:
 Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Columns(3)) Is Nothing Then
     If Target.Value = "YES" Then
    Target.Offset(, 1).Resize(, 3) = "OK"
  End If
 End If
End Sub

Beste HSV,

Bedankt voor je antwoorden. Heb het even heel druk gehad de afgelopen 2 weken. Hier mijn reactie.

1: Wat ik eigenlijk bedoelde en zelf misschien niet duidelijk zei, is of je bijv. als target kolom C & D kan geven, waarna hij met offset 1 kolom verder gaat t.o.v. D. Is dit mogelijk en zo ja, hoe dan?

2: Oke, bedankt in ieder geval!

3: Nogmaals bedankt! Wat doet de functie resize?

Verder werkt alles prima nu. Heb het een en ander aangepast waardoor formules nu sneller werken en er (waarschijnlijk) geen probleem meer is met meerdere 'choose' enz. Moet het nog afmaken, dus hoop dat ik gelijk heb.

Wat ik nog wel afvroeg, naast bovenstaande vraagjes, is het volgende.

4: Als ik een rij selecteer, dus helemaal aan de linkerkant, dan krijg ik de foutmelding 'Door de toepassing of door object gedefinieerde fout'. En als ik dan foutopsporing doe, geeft hij de fout bij het dikgedrukte deel.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Columns("D:G")) Is Nothing Then
If ActiveCell.Value = "n/a" Then Target.Offset(, 1).Activate
End If
If Not Intersect(Target, Columns("H")) Is Nothing Then
If Not ActiveCell.Value = "YES" Then Target.Offset(, 1).Activate
End If
End Sub

Bedankt weer.
 
vraag 1:
Zoiets?
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 With Range("C:C")
   If ActiveCell.Value = "n/a" Then Cells(Target.Row, 5).Activate
  End With
With Range("D:D")
   If ActiveCell.Value = "n/a" Then Cells(Target.Row, 5).Activate
  End With
End Sub
3:
Als je de code had getest, dan had je gezien wat 'Resize' doet. :rolleyes:


4:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Columns("D:G")) Is Nothing Then
If ActiveCell.Value = "n/a" Then Target.Offset(, 1).Activate
End If
If Not Intersect(Target, Columns("H")) Is Nothing Then
If Not ActiveCell.Value = "YES" Then
[COLOR="red"]On Error Resume Next[/COLOR]
Target.Offset(, 1).Activate
End If
End If
End Sub
 
vraag 1:
Zoiets?
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 With Range("C:C")
   If ActiveCell.Value = "n/a" Then Cells(Target.Row, 5).Activate
  End With
With Range("D:D")
   If ActiveCell.Value = "n/a" Then Cells(Target.Row, 5).Activate
  End With
End Sub
Zoiets ja, alleen dan net andersom. De bedoeling is als volgt: als bijv. een waarde in kolom C aan 'NO' voldoet, dan moet er in kolom H een keuzelijst s0 komen. Maar voldoet kolom C aan 'YES', dan moet er in kolom H keuzelijst s1 komen. Voldoet nu kolom F ook aan 'YES', dan moet in kolom H een keuzelijst s2 komen. Eigenlijk zo:

Als C = NO dan H = keuzelijst s0
Als C = YES dan H = keuzelijst s1
Als C + F = YES dan H = keuzelijst s2
Als C + G = YES dan H = keuzelijst s2
Als C + F + G = YES dan H = keuzelijst s2

Is dat mogelijk? Ik begin de werking ene beetje te begrijpen, maar dat is alleen per kolom en per targetcel, niet voor meerdere en afhankelijkheden :(. Als het lukt zou uitleg helemaal super zijn, dan hoop ik het voortaan zelf te kunnen.

3:
Als je de code had getest, dan had je gezien wat 'Resize' doet. :rolleyes:

Excuse me, had het inderdaad niet goed geprobeerd. Maar het doet precies wat ik wil, bedankt :thumb:

4:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Columns("D:G")) Is Nothing Then
If ActiveCell.Value = "n/a" Then Target.Offset(, 1).Activate
End If
If Not Intersect(Target, Columns("H")) Is Nothing Then
If Not ActiveCell.Value = "YES" Then
[COLOR="red"]On Error Resume Next[/COLOR]
Target.Offset(, 1).Activate
End If
End If
End Sub
Nogmaals heel erg bedankt. Ik krijg helaas soms deze foutmelding 'Typen komen niet met elkaar overeen' en dan wordt de volgende regel geel:

'Activate Column E if Column D is other then choose
If Not Intersect(Target, Range("D3:D65536")) Is Nothing Then
If Target.Value = "choose" Then
Target.Offset(, 1).Validation.Modify xlValidateList, , , "=wait"
Target.Offset(, 1) = "wait"
ElseIf Target.Value = "n/a" Then
Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RRna"
Target.Offset(, 1) = "n/a"
ElseIf Target.Value <> "choose" Then
Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RR"
Target.Offset(, 1) = "choose"
End If
End If

Alles weer in de quote gezet, bedankt!
 
Laatst bewerkt:
Ik denk dat ik het hier maar bij laat beste RV2010.

Ik kan er misschien nog wat berichtjes en tijd insteken, maar je leest de helft zeker niet.

Code:
If Not Intersect(Target, Range("D365536")) Is Nothing Then
[COLOR="red"]If Target.Value = "choose" Then [/COLOR]
Target.Offset(, 1).Validation.Modify xlValidateList, , , "=wait"
Target.Offset(, 1) = "wait"
ElseIf Target.Value = "n/a" Then
Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RRna"
Target.Offset(, 1) = "n/a"
ElseIf Target.Value <> "choose" Then
Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RR"
Target.Offset(, 1) = "choose"
End If
End If

Als je mijn vorig berichje een beetje naloopt (je bedankt me er zelfs voor), staat daar ergens 'On Error Resume Next'.

Gebruik het dan ook, en probeer het.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR="red"]On Error Resume Next[/COLOR]
If Not Intersect(Target, Range("D3:D65536")) Is Nothing Then
If Target.Value = "choose" Then
Target.Offset(, 1).Validation.Modify xlValidateList, , , "=wait"
Target.Offset(, 1) = "wait"
ElseIf Target.Value = "n/a" Then
Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RRna"
Target.Offset(, 1) = "n/a"
ElseIf Target.Value <> "choose" Then
Target.Offset(, 1).Validation.Modify xlValidateList, , , "=RR"
Target.Offset(, 1) = "choose"
End If
End If
End Sub

Je code gaf alleen een fout bij mij als je de hele rij selecteerde, en op 'delete' drukte.
Nu dus niet meer.
 
Hoi HSV,
Weer bedankt voor je reactie!

Ik heb de code wel geprobeerd, maar ik wilde eigenlijk graag weten waarom ik die foutmelding kreeg. Ik bedoelde met de vraag er achter te komen waarom die error tevoorschijn komt en wat die errorcode doet. Dit zodat ik niet een foutieve of misschien onvolledige code probeer te maskeren met een errorcode. Want ik wil natuurlijk liever een normale code hebben dan een code die verkeerd is, om die fout vervolgens te blokkeren met een errorcode :).

Hoop dat je het begrijpt :o

Thnx again!
 
Beste HSV,

Ik heb inmiddels de foutcode goed ingevoerd en alles werkt prima, maar heb je misschien enig idee hoe het komt dat die foutmelding überhaupt tevoorschijn kwam?

Heb ook eindelijk het probleem met het selecteren van het vaker voorkomen van 'choose' op een regel, waardoor excel crashte, op kunnen lossen. :)

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Target, Range("D3:Y65536")) Is Nothing Then
  On Error Resume Next
     If Cells(Target.Row, 4) = "choose" Then
      Application.Goto Cells(Target.Row, 4)
     ElseIf Cells(Target.Row, 5) = "choose" Then
      Application.Goto Cells(Target.Row, 5)
     ElseIf Cells(Target.Row, 6) = "choose" Then
      Application.Goto Cells(Target.Row, 6)
    End If
  End If
End Sub


Als je tijd hebt en het wilt, zou je dan mijn vragen over meerdere afhankelijkheden in VBA willen beantwoorden?

De bedoeling is als volgt: als bijv. een waarde in kolom C aan 'NO' voldoet, dan moet er in kolom H een keuzelijst s0 komen. Maar voldoet kolom C aan 'YES', dan moet er in kolom H keuzelijst s1 komen. Voldoet nu kolom F ook aan 'YES', dan moet in kolom H een keuzelijst s2 komen. Eigenlijk zo:

Als C = NO dan H = keuzelijst s0
Als C = YES dan H = keuzelijst s1
Als C + F = YES dan H = keuzelijst s2
Als C + G = YES dan H = keuzelijst s2
Als C + F + G = YES dan H = keuzelijst s2

Zie ook hierboven.
Alvast bedankt!!
 
Laatst bewerkt:
Kan iemand mij misschien nog helpen met het laatste, nog openstaande probleem? Dat is als volgt: als kolom C en D beide YES zijn, E geactiveerd wordt met een bepaalde lijst. Als dat niet zo is, dan E of niet activeren, of met een andere lijst of bijv. kolom F activeren.

Bedankt!
 
Kan iemand mij misschien nog helpen met het laatste, nog openstaande probleem? Dat is als volgt: als kolom C en D beide YES zijn, E geactiveerd wordt met een bepaalde lijst. Als dat niet zo is, dan E of niet activeren, of met een andere lijst of bijv. kolom F activeren.

Bedankt!

Iemand? Als het niet kan hoor ik het ook graag :)
 
Iemand die mij met m'n laatste probleempje wil helpen? Dan kan deze ook gewoon op opgelost. Of moet ik een nieuw topic aanmaken? Het gaat nl. nog steeds over het 1e probleem ;)

Bedankt!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan