VBA rookie, code geeft vastloper

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • hichelay
  • Registratie: November 2010
  • Laatst online: 19:59
Dag medetweakers,

Ik zit met het volgende probleem. Ik ben een echte noob wat betreft VBA in Excel, maar de logica is, vind ik, prima te begrijpen.

Het volgende: F8 is een cel met gegevensvalidatie, alleen "Ja" en "Nee" zijn mogelijk. Indien F8 "Ja" is, dan worden rij 10 t/m 26 verborgen. Als F8 "Nee" is, moeten rij 10 t/m 26 dus niet zijn verborgen. Tot zover ben ik gekomen, dit werkt prima.

Nu wil ik een tweede effect toevoegen als F8 "Nee" is, namelijk dat ook cel F27 "Nee" wordt. Ook
F27 heeft gegevensvalidatie, alleen "Ja" of "Nee" zijn mogelijk.

Dit is de code die ik nu heb en wat werkt:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("F8").Value = "Ja" Then
Rows("10:26").EntireRow.Hidden = True
ElseIf Range("F8").Value = "Nee" Then
Rows("10:26").EntireRow.Hidden = False

End If

If Range("F27").Value = "Ja" Then
Rows("29:29").EntireRow.Hidden = True
Rows("31:32").EntireRow.Hidden = True
ElseIf Range("F27").Value = "Nee" Then
Rows("29:29").EntireRow.Hidden = False
Rows("31:32").EntireRow.Hidden = False

End If
End Sub

Ik heb al geprobeerd toe te voegen onder Rows("10:26").EntireRow.Hidden = False:

Range("F27").Value = "Nee"

en

Range("F8").Select

en dan de commando's voor copy, select F27 en paste.

Als ik nu F8 verander van ja naar nee, lijk ik in een soort loop te komen en geeft VBA aan dat er een fout zou moeten zitten in het stukje Rows("10:26").EntireRow.Hidden = False.

Wat doe ik toch verkeerd, zo moeilijk kan het niet zijn?

Alvast bedankt!

Alle reacties


Acties:
  • 0 Henk 'm!

  • Paul1987
  • Registratie: Oktober 2004
  • Laatst online: 15:26
Het beste is om de worksheet_change en de code te splitsen.
Ik heb dit gedaan en (zonder gegevens validatie) getest, bij mij werkt het (Excel 2016).

Visual Basic .NET: SHEET1
1
2
3
4
5
6
7
8
9
10
11
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$F$8" Then
Call test
End If

If Target.Address = "$F$27" Then
Call test2
End If

End Sub


Visual Basic .NET: Module1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub test()
If Range("F8").Value = "Ja" Then
Rows("10:26").EntireRow.Hidden = True

Else

If Range("F8").Value = "Nee" Then
Range("F27").Value = "Nee"
Rows("10:26").EntireRow.Hidden = False

End If
End If

End Sub


Sub test2()
If Range("F27").Value = "Ja" Then
Rows("29:29").EntireRow.Hidden = True
Rows("31:32").EntireRow.Hidden = True

Else

If Range("F27").Value = "Nee" Then
Rows("29:29").EntireRow.Hidden = False
Rows("31:32").EntireRow.Hidden = False
End If
End If

End Sub

Is dit het beste antwoord? Dan hoor ik dat graag!