VBA herkend uitkomst 'Als' functie niet

Status
Niet open voor verdere reacties.

Mark21

Gebruiker
Lid geworden
20 sep 2011
Berichten
17
Hallo,

Ik ben vandaag voor het eerst met VBA aan het stoeien gegaan en wil hiermee rijen verbergen die niet van toepassing zijn. Na wat zoekwerk op dit forum ben ik tot onderstaande code gekomen en deze werkt prima wanneer ik in cel Q22 handmatig 'Ja' of 'Nee' in voer. Nu is het probleem dat in cel Q22 automatisch het woord ja of nee wordt gegenereerd met behulp van de 'Als' functie. Maar wanneer ik dan onderstaande formule toepas veranderd er niets meer, waarschijnlijk doordat de code de uitkomst in cel Q22 niet als tekst ziet.

Kan iemand me misschien vertellen wat ik fout doe? Alvast bedankt! :)

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("Q22"), Target) Is Nothing Then Exit Sub
If Range("Q22").Value = "Ja" Then
Rows("135:150").Hidden = False
Rows("170:180").Hidden = False
End If
If Range("Q22").Value = "Nee" Then
Rows("135:150").Hidden = True
Rows("170:180").Hidden = True
End If


End Sub
 
Met die intersect kijk je of er getypt is in Q22. Omdat de basis voor de verandering ergens anders zit zal deze altijd Nothing zijn en dus exit sub

Ron
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Q22").DirectPrecedents) Is Nothing Then
    Rows("135:150").Hidden = IIf(Range("Q22").Value = "Ja", False, True)
    Rows("170:180").Hidden = IIf(Range("Q22").Value = "Ja", False, True)
End If
End Sub
 
Het lukt me toch nog niet helemaal. Nadat ik de code heb ingevoerd en met het programma aan het werk ga krijg ik de volgende melding:

Fout 1004
Er zijn geen cellen gevonden.


Via foutopsporing kom ik uit bij 'Range' in onderstaande regel
If Not Intersect(Target, Range("Q22").DirectPrecedents) Is Nothing Then

Maar heb geen idee wat ik ermee aan moet.
 
Plaats eens een voorbeeldbestangje met de gebruikte formule.
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C4").DirectPrecedents) Is Nothing Then
    Rows("14:19").Hidden = IIf(Range("C5").Value = "Ja", False, True)
    Rows("21:26").Hidden = IIf(Range("C5").Value = "Ja", False, True)
End If
End Sub
 
of

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("C4").DirectPrecedents) Is Nothing Then range("A14:A19,A21:A26").entirerow.Hidden = Range("C5").Value <> "Ja"
End Sub
 
Oke nu is het wel gelukt. Bedankt allemaal!

De fout zat m toch in deze regel:
Code:
If Not Intersect(Target, Range("C4").DirectPrecedents) Is Nothing Then

Ik had Range("C5") ingevuld, net als bij Range in de volgende regels, maar dat moest C4 zijn.
De laatste twee codes werken beide :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan