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

Rijen verbergen met VBA

Status
Niet open voor verdere reacties.

danny147

Terugkerende gebruiker
Lid geworden
29 apr 2007
Berichten
4.744
Beste,

Graag zou ik een paar rijen willen verbergen, die afhankelijk zijn van het jaartal dat in cel Z2 staat.

Heb volgende code geschreven, maar er zit echter een foutje in, zie jullie ze ?

Code:
Sub Verwijderen_van_rijen()
'
' Verwijderen van rijen volgens het jaartal.

    Rows("8:38").Select
    Selection.EntireRow.Hidden = False
    
    If Range("Z2") = 2008 Then
        Range("11:11,15:15,29:29,33:33").Select
        Range("A33").Activate
        Selection.EntireRow.Hidden = True
    If Range("Z2") = 2009 Or 2014 Or 2015 Or 2020 Or 2025 Or 2026 Then
        Range("9:9,15:15,29:29,33:33").Select
        Range("A33").Activate
        Selection.EntireRow.Hidden = True
    If Range("Z2") = 2010 Or 2011 Or 2012 Or 2016 Or 2017 Or 2021 Or 2022 Or 2023 Or 2027 Or 2028 Then
        Range("9:9,15:15,27:27,33:33").Select
        Range("A33").Activate
        Selection.EntireRow.Hidden = True
    If Range("Z2") = 2013 Or 2019 Or 2024 Or 2029 Or 2030 Then
        Range("11:11,17:17,29:29,33:33").Select
        Range("A33").Activate
        Selection.EntireRow.Hidden = True
    If Range("Z2") = 2018 Then
        Range("9:9,17:17,29:29,35:35").Select
        Range("A35").Activate
        Selection.EntireRow.Hidden = True
    End If
     End If
      End If
       End If
        End If
        
    Range("A2").Select
    
End Sub

Moet nu gaan werken,dus zal ik vanmiddag wel reageren op jullie antwoorden.

Groetjes Danny. :thumb:
 
Je deze gebruiken:

Code:
Sub Verwijderen_van_rijen()
'
' Verwijderen van rijen volgens het jaartal.

    Rows("8:38").EntireRow.Hidden = False
    If Range("Z2") = 2008 Then Range("11:11,15:15,29:29,33:33").EntireRow.Hidden = True
    If Range("Z2") = 2009 Or Range("Z2") = 2014 Or Range("Z2") = 2015 Or Range("Z2") = 2020 Or Range("Z2") = 2025 Or Range("Z2") = 2026 Then Range("9:9,15:15,29:29,33:33").EntireRow.Hidden = True
    If Range("Z2") = 2010 Or Range("Z2") = 2011 Or Range("Z2") = 2012 Or Range("Z2") = 2016 Or Range("Z2") = 2017 Or Range("Z2") = 2021 Or Range("Z2") = 2022 Or Range("Z2") = 2023 Or Range("Z2") = 2027 Or Range("Z2") = 2028 Then Range("9:9,15:15,27:27,33:33").EntireRow.Hidden = True
    If Range("Z2") = 2013 Or Range("Z2") = 2019 Or Range("Z2") = 2024 Or Range("Z2") = 2029 Or Range("Z2") = 2030 Then Range("11:11,17:17,29:29,33:33").EntireRow.Hidden = True
    If Range("Z2") = 2018 Then Range("9:9,17:17,29:29,35:35").EntireRow.Hidden = True
    Range("Z2").Select
    
End Sub

Bij jouw code heb je de End If functies allemaal achteraan je code staan. Zodra de eerste voorwaarde dus fout is "springt" de macro al naar de laatste End If.
Verder heb je de Or functie iets verkeerd gebruikt. Als je Or gebruikt dan moet je per deel van de Or functie aangeven waaraan je voorwaarde moet voldoen (zie mijn voorbeeld).
 
Of

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  if Target.Address="Z2" then
   c0="11:11,15:15,29:29,33:33"
   select Case Target
   case 2009,2014,2015,2020,2025,2026
     c0="9:9,15:15,29:29,33:33"
   case 2010,2011,2012,2016,2017,2021,2022,2023,2027,2028
     c0="9:9,15:15,27:27,33:33"   
   case 2013,2019,2024,2029,2030
     c0="11:11,17:17,29:29,35:35"
   end select
   Rows("8:38").EntireRow.Hidden = False
   Range(c0).entirerow.hidden=true
  end if
End Sub
 
Laatst bewerkt:
Beste snb en Brandts ;)

Bedankt voor jullie bijdrage.

De code van Brandts werkt perfect :thumb:

De code van snb heb ik moeten aanpassen omdat er een klein foutje inzat ivm de rijen, nl.

Code:
   case 2013,2019,2024,2029,2030
     c0="9:9,17:17,29:29,35:35"

moet worden

Code:
   case 2013,2019,2024,2029,2030
     c0="11:11,17:17,29:29,33:33"

De code is zeer overzichtelijker dan die van Brandts :thumb:
Voorwat staat c0 ?

Kan de rijen ook automatisch aangepast worden van zodra ik cel Z2 veranderd of moet ik telkens naar makro's gaan en Rijen Tonen op uitvoeren klikkken of knopje toevoegen ?

Groetjes Danny :thumb:
 
Beste

Kan de code van snb of van Brandts automatisch worden uitgevoerd van zodra ik de cel Z2 verander ?

Groetjes Danny. :thumb:
 
Beste snd en Wigi ;)

Heb de formule erin geplaatst maar hij doet het niet.

Cel Z2 wordt ingevuld door een besuringselement.
Heb het ook handmatig ingevuld en dan doet hij het ook niet.

Waarom staat de volgende code achteraan, als hij ze als eerste moet uitvoeren ?

Code:
   Rows("8:38").EntireRow.Hidden = False

Groetjes Danny. :thumb:
 
Laatst bewerkt:
Als z2 wordt gewijzigd door een besturingselement (Bijv. een keuzelijst/combobox), dan moet je de code in dat besturingselement zetten. bijv.

Code:
Sub Combobox1_Change()
   c0="11:11,15:15,29:29,33:33"

   select Case Combobox1.value
   case 2009,2014,2015,2020,2025,2026
     c0="9:9,15:15,29:29,33:33"
   case 2010,2011,2012,2016,2017,2021,2022,2023,2027,2028
     c0="9:9,15:15,27:27,33:33"   
   case 2013,2019,2024,2029,2030
     c0="11:11,17:17,29:29,35:35"
   end select

   Rows("8:38").EntireRow.Hidden = False
   Range(c0).entirerow.hidden=true
End Sub
De plaats van Rows("8:38").EntireRow.Hidden = False doet er in dit geval niet toe. Voor de leesbaarheid heeft de huidige positie mijn voorkeur.
 
Beste snb ;)

Heb de volgende code in het besturingelement gestoken met wat aanpassingen hier en daar en nu werkt het op en top. :thumb:

Code:
Sub Ringveld1_BijWijzigen()
    Rijen_verbergen
End Sub


Sub Rijen_verbergen()

   c0 = "11:11,15:15,29:29,33:33"

   Select Case Range("Z2").Value
   
   Case 2009, 2014, 2015, 2020, 2025, 2026
     c0 = "9:9,15:15,29:29,33:33"
   Case 2010, 2011, 2012, 2016, 2017, 2021, 2022, 2023, 2027, 2028
     c0 = "9:9,15:15,27:27,33:33"
   Case 2013, 2019, 2024, 2030
     c0 = "11:11,17:17,29:29,33:33"
   Case 2018, 2029
     c0 = "11:11,17:17,29:29,35:35"
     End Select
     
   Rows("8:38").EntireRow.Hidden = False
   Range(c0).EntireRow.Hidden = True
   
End Sub

Bedankt snb :)

Groetjes Danny :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan