Acties:
  • 0 Henk 'm!

  • p.d.vries
  • Registratie: Februari 2017
  • Laatst online: 14-08 11:14
Ik heb in een bepaalde cel een WAAR/ONWAAR uitkomst.
Deze wens ik in een VBA routine te gebruiken, om een regel te verbergen/zichtbaar te maken.
Als ik een harde waarde in een cel invoer werk dit, maar niet bij een berekende cel(-waarde)
Wie o wie kan mij verder helpen?

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Wat is de precieze code, wat de evt foutmelding?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • p.d.vries
  • Registratie: Februari 2017
  • Laatst online: 14-08 11:14
In het eerste deel van de routine (C38) wordt handmatig met een waarde gevuld, werkt prima.
In het tweede deel is cel (Z9) een WAAR/ONWAAR uitkomst. Het verbergen van de regel werkt dan niet. Ook niet als ik de W/O overzet naar bijvoorbeeld een getal.

Acties:
  • 0 Henk 'm!

  • p.d.vries
  • Registratie: Februari 2017
  • Laatst online: 14-08 11:14
Oh Ja wij ik vergeten aan te hangen

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("C38"), Target) Is Nothing Then
If Range("C38").Value > 0 Then
Rows("39:39").Hidden = False
Else
Rows("39:39").Hidden = True
End If
End If

If Not Intersect(Range("Z9"), Target) Is Nothing Then
If Range("Z9").Value = 2 Then
Rows("42:42").Hidden = False
Else
Rows("42:42").Hidden = True

End If
End If
End Sub

Acties:
  • 0 Henk 'm!

  • diefightdie
  • Registratie: Januari 2012
  • Laatst online: 13-09 02:43
code:
1
If Range("Z9").Value = 2 Then

moet dit niet zijn
code:
1
If Range("Z9").Value == 2 Then


Ik weet trouwens niet of je Excel values kan matchen met cijfers, of dat dit altijd een string '2' zou moeten zijn.

[ Voor 35% gewijzigd door diefightdie op 22-02-2017 16:46 ]


Acties:
  • 0 Henk 'm!

  • p.d.vries
  • Registratie: Februari 2017
  • Laatst online: 14-08 11:14
Nee If Range ("Z9").Value == 2 Then , geeft compileer fout.
(trouwens de 2 is in de cel Z9 de vertaling voor WAAR)

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

p.d.vries schreef op woensdag 22 februari 2017 @ 16:44:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("C38"), Target) Is Nothing Then
If Range("C38").Value > 0 Then
Rows("39:39").Hidden = False
Else
Rows("39:39").Hidden = True
End If
End If

If Not Intersect(Range("Z9"), Target) Is Nothing Then
If Range("Z9").Value = 2 Then
Rows("42:42").Hidden = False
Else
Rows("42:42").Hidden = True

End If
End If
End Sub
Je bent je ervan bewust dat je rij 9 checkt en rij 42 verbergt?

En als Z9 een formule bevat zal target nooit verwijzen naar Z9: die wijzigt namelijk niet. :) De uitkomst van de formule zal wel wijzigen, maar niet als gevolg van een wijziging in Z9. Dus idd: de code om de zichtbaarheid van rij 42 te wijzigen wordt nooit aangeroepen.

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


Acties:
  • 0 Henk 'm!

  • p.d.vries
  • Registratie: Februari 2017
  • Laatst online: 14-08 11:14
Hoe kan ik dan een formule uitkomst gebruiken om een actie (verbergen/zichtbaar maken van een regel) in vba te realiseren?

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

code:
1
If Not Intersect(Range("Z9"), Target) Is Nothing Then
is alleen maar nodig om te controleren in welke cel de wijziging plaatsvond die het event triggerde, zodat de rest van de code niet wordt uitgevoerd bij irrelevante wijzigingen.

Je moet dus in die regel checken of de broncellen van de formule zijn gewijzigd of je laat de controle helemaal weg of je controleert alleen of de hidden.status van rij 42 overeenkomt met de waarde in Z9.

code:
1
2
3
4
5
If not intersect(range("A1,B3,C8") , Target) [...]
of
rows(x).hidden=not range("Z9").Value [...]
of
if rows(x).hidden=range("Z9") then [...]

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

Pagina: 1