• 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 bij invoeren aantallen (macro)

Status
Niet open voor verdere reacties.

WillemExcel

Gebruiker
Lid geworden
16 feb 2016
Berichten
26
Hoi allemaal,

Ik ben een Excel model aan het bouwen en ben op iets gestuit waar ik zelf niet uit kom. Daarom zou jullie hulp heel fijn zijn.
In het Excelbestand zou ik graag bij 'Aantal particulieren' het aantal particulieren in willen vullen. Als ik dan bijvoorbeeld 10 invul, dan wil ik dat de rijen eronder vanaf rij 11 tm 30 verbergen. Ik denk dat dit het beste werkt met een macro, maar ik kom daar niet goed uit.

Zouden jullie mij kunnen helpen?
Alvast bedankt!

Willem

Bekijk bijlage Excelvraag rijen verbergen (macro).xlsx
 
Hang deze eens achter je werkblad:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
 If Target.Address = "$E$17" Then
  Rows("20:49").Hidden = True
  Rows("20:" & [E17] + 20).Hidden = False
 End If
Application.ScreenUpdating = True
End Sub
 
Ha. Weer te traag ... Ik was hier tussendoor ook mee aan het stoeien en ik zie dat er al weer een antwoord is geformuleerd ...

Maar goed. Volgens mij zul je hem iets uit moeten breiden voor getallen >= 30. Dit is mijn oplossing:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 5 And Target.Row = 17 Then
        Rows.EntireRow.Hidden = False
        If Target.Value > 0 And Target.Value < 30 Then
            Rows(20 + Target.Value & ":49").EntireRow.Hidden = True
        End If
    End If
End Sub
 
Dank Cobbe en Peter! Ze werken allebei goed.
Ik weet niet welke oplossing beter is, maar als die van Peter iets uitgebreider is, dan kies ik voor die.
Erg blij met jullie hulp!

Groeten,
Willem
 
1 vraag nog over deze macro.
Waarom kan ik ctrl + Z niet meer gebruiken als ik het aantal particulieren heb aangepast?

Groeten,
Willem
 
Da's 1 van de beperkingen bij het gebruik van de Charge events.
 
Mijn oplossing is iets uitgebreider omdat er een controle wordt gedaan op het aantal. Die van Cobbe is in zoverre slimmer dat hij rechtstreeks verwijst naar het celadres en ik dat omslachtiger bepaal. Ook is het uit- en weer aanzetten van screenupdate netter. Dus een combi zou m.i. het beste zijn.
 
Wat moet dat verbergen van rijen opleveren ? Waar is het goed voor ? Wat gaat er beter dan zonder verborgen rijen ?
 
Het tabblad wordt er mooier van. Vaak zijn er namelijk veel minder dan 30 particulieren. Op het scherm en op papier daardoor mooier.
Zou natuurlijk ook handmatig kunnen, maar als het met een macro kan, dan ziet dat er mooier uit.
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
 If Target.Address = "$E$17" And IsNumeric(Target) Then
  Rows("20:49").Hidden = True
  With WorksheetFunction
     Rows("20:" & .Min(30, .Max([E17], 0)) + 19).Hidden = False
  End With
 End If
Application.ScreenUpdating = True
End Sub

ScreenUpdating = False zorgt er voor dat de wijziging van het werkblad pas zichtbaar wordt na de uitvoering van de hele macro., zoniet flikkert uw scherm voortdurend bij elke aanpassing.

Er zit nu een controle in de code op <0, >30 en numerieke waarde.

Knorpotten hebben meestal gelijk op dit forum maar het is u toegestaan uw eigen goesting te doen. :)
 
Op het scherm en op papier daardoor mooier.
Hoewel mooi smaak afhankelijk is kan je hetzelfde voor elkaar krijgen zonder VBA. Door gebruik te maken van een tabel en de bijbehorende functionaliteiten zoals het filter en de totaalrij. Het geheel is naar eigen smaak op te maken. En zelfs <Ctrl> + Z werkt.:d
 

Bijlagen

@Cobbe, dank voor uw bericht. De uitleg is duidelijk en ik denk dan dat ik voor uw code ga.

@VenA, filter is inderdaad ook een optie maar dat heeft niet mijn voorkeur. Wel dank voor het meedenken!

Ik kan weer een stuk verder. Dank iedereen!

Groeten,
Willem
 
@VenA

Ik vind dat, om met Cobbe te spreken, een 'schone' suggestie ! :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan