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

If Then Else formules probleem

  • Onderwerp starter Onderwerp starter jk88
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

jk88

Gebruiker
Lid geworden
24 okt 2011
Berichten
43
Ik heb te lang niet meer met VBA gewerkt, ik kom niet meer goed uit de If Then Else formules.

Zou iemand mij kunnen helpen met een werkende formule die het volgende doet:

Code:
IF (B21 = "0") Then 

Rows(16 tot 22).Hide 

Else 
Rij(16 tot 22).Unhide

B21 is overigens een waarde die hij uit een andere sheet pakt.

Alvast bedankt!
 
Laatst bewerkt:
Zo zal dat wel lukken:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Cells(21, 2) = 0 Then
   Rows("16:22").RowHeight = 0
 Else
   Rows("16:22").RowHeight = 15
 End If
End Sub
 
Waarom niet gewoon de rijen verbergen?
Code:
Sub Rij()
    ActiveSheet.Rows("16:22").Hidden = IIf(Range("b21") = 0, True, False)
End Sub

Deze regel kan eventueel ook in de selectionchange worden opgenomen.

Mvg Leo
 
Laatst bewerkt:
Het resultaat blijft hetzelfde maar toch had ik iets over het hoofd gezien,
Als cel B21 is leeg dan....
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Rows("16:22").Hidden = IIf(IsEmpty(Range("b21")), True, False)
End Sub
 
Kan, maar met de IsEmpty worden de rijen niet verbogen als er in b21 een 0 staat, of als er een formule in staat.
De vraag uit de titel betreft inderdaad wel specifiek een lege cel.
Een voorbeeld bestandje doet soms wonderen ;)

Mvg Leo
 
Laatst bewerkt:
Ondanks dat ik er geen voorbeeld bestandje bij had gedaan werkt uw oplossing
Code:
    ActiveSheet.Rows("16:22").Hidden = IIf(Range("b21") = 0, True, False)
perfect.

Ik heb deze code gewoon op de juiste locatie in het bestaande VBA script gezet en hij werkt perfect. Ook als hij bij de eerste invoer op Hide wordt gezet, en ik het formulier later nog eens invul maar dan met een waarde groter dan 0 dan Unhide hij hem ook goed.

Is er een reden voor waarom ik beter een private sub kan gebruiken (zo ja, hoe voeg ik die toe/laat ik die uitvoeren in de huidige sub?)
 
Laatst bewerkt door een moderator:
Da's mooi.

Het heeft de voorkeus om de code inderdaad in het bestaande script op te nemen.
De genoemde private sub is een event macro, een macro die door een bepaalde gebeurtenis wordt getriggert.

De change event zou meer voor de hand liggen. De start na een werkblad wijziging

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 ActiveSheet.Rows("16:22").Hidden = IIf(Range("b21") = 0, True, False)
End Sub

Even macro's staan bij de excel objecten in het betreffende blad.
Ze zijn handig, maar kunnen onverwachte effecten oproepen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan