Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 13 van 13

Onderwerp: VBA - automatisch aanpassen range bij wijzigen document

  1. #1
    Junior Member
    Geregistreerd
    15 november 2010
    Vraag is opgelost

    VBA - automatisch aanpassen range bij wijzigen document

    Goedemiddag,

    Werkelijk geen idee of dit überhaupt mogelijk is maar daarom extra benieuwd of iemand een suggestie heeft.

    Ik heb een Excel met meerdere VBA's die toegespitst zijn op specifieke cellen, rijen en/of kolommen. Het enige vervelende is dat als ik dan een kolom of rij toevoeg, alle ranges binnen deze VBA's handmatig aangepast moeten worden om het weer kloppend te krijgen. Een concreet voorbeeld:


    Private Sub RESETBUTTON()
    If MsgBox("Weet je zeker dat je het document wilt resetten?", vbYesNo) = vbNo Then Exit Sub
    Range("J12:J21, Q12:Q21, R12:R21, J26:J65, Q26:Q65, R26:R65, J68:J82, Q68:Q82, R68:Q82, J85:J99, Q85:Q99, R85:Q99, J102:J116, Q102:Q116, R102:R116, J119:J130, Q119:Q130, R119:R130, J135:J184, Q135:Q184, R135:R184, J187:J201, Q187:Q201, R187:R201, J204:J218, Q204:Q218, R204:R218, J221:J235, Q221:Q235, R221:R235, D239:D248, J239:J248, Q239:Q248, R239:R248, J250:J259, Q250:Q259, R250:R259, J262:J271, Q262:Q271, R262:R271, J275:J277, Q275:Q277, R275:R277, J279:J281, Q279:Q281, R279:R281, J284:J290, Q284:Q290, R284:R290, J293:J301, Q293:Q301, R293:R301").Select
    Selection.ClearContents
    Range("D12:D21, D26:D65, D68:D82, D85:D99, D102:D116, D119:D130, D135:D184, D187:D201, D204:D218, D221:D235, D250:D259, D262:D271, D279:D281, D275:D277, D284:D290, D293:D301" & LastRow) = "Test"

    End Sub

    Bottom line; als ik nu ergens een extra rij invoeg dan klopt bijna geen enkele van de bovenstaande ranges meer en moet ik ze handmatig weer aanpassen. Het mooiste zou natuurlijk zijn als het zou kunnen anticiperen op deze actie.

    Iemand een briljant idee en mij daarmee uit de brand zou willen helpen?

    Alvast super bedankt voor de hulp!

    Hartelijke groet
    Laatst aangepast door dewes86 : 22 mei 2020 om 14:05

  2. #2
    Giga Senior cow18's avatar
    Geregistreerd
    24 mei 2008
    Locatie
    Alveringem, België
    werk met gedefinieerde namen, als je daar binnen een rij toevoegt, dan past die zich vanzelf aan.
    Misschien hoef je dan enkel zoiets te doen voor de J-kolom, aangezien je steeds daarop Q en R meeneemt.
    Lukt het niet, post dan een voorbeeldje.

  3. #3
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    9 september 2000
    Locatie
    Zuid-Holland
    Geef de bedoelde range een naam, bijvoorbeeld R_RESET
    In je code doe je dan:
    Code:
    Range("R_RESET").ClearContents
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  4. #4
    Junior Member
    Geregistreerd
    15 november 2010

    Voorbeeld file

    Bedankt allebei voor de reacties!

    Het klinkt logisch maar ik ben eerlijk gezegd nog niet helemaal thuis met hoe je precies namen van ranges definieert. Kunnen jullie mij wellicht op weg helpen hoe je dit precies doet?

    Ik heb een voorbeeld file bijgevoegd in de bijlage.

    Ontzettend bedankt voor jullie hulp!
    Bijgevoegde bestanden Bijgevoegde bestanden

  5. #5
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    9 september 2000
    Locatie
    Zuid-Holland
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  6. #6
    Junior Member
    Geregistreerd
    15 november 2010
    Super! Een groot deel heb ik al om kunnen zetten. Hoe pas ik de range juist in bij de onderstaande code? Dit is mij namelijk nog niet gelukt:

    Private Sub Knop42_Klikken()
    Dim Rng As Range
    Set Rng = Union(Columns(15), Columns(16))
    Rng.EntireColumn.Hidden = Not Rng.EntireColumn.Hidden
    End Sub

    Ik dacht dat ik de range moest toekennen in deze regel:

    Set Rng = Union(Columns(15), Columns(16))

    Dit lukt helaas niet en er ontstaat een compileerfout.

    Alvast bedankt weer!

  7. #7
    Giga Honourable Senior Member
    Geregistreerd
    18 juli 2008
    De code werkt prima als je 'Private' weglaat en de code aan de knop hangt.
    ____________
    Met vriendelijke groet,
    Harry

    Lag nooit om de keuzes van dien vraauw, bist ter zulf aine van....
    (Grunnegs-Gronings)

  8. #8
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    9 september 2000
    Locatie
    Zuid-Holland
    Dit is voldoende:
    Code:
    Private Sub Knop42_Klikken()
        Columns("O:P").Hidden = Not Columns("O:P").Hidden
    End Sub
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  9. #9
    Junior Member
    Geregistreerd
    15 november 2010
    Hi Ed, bedankt weer voor je reactie! Maar stel nou dat ik een nieuwe kolom invoer ergens voor of na, dan zal ik deze alsnog handmatig moeten veranderen omdat ze allemaal verspringen.

    Vandaar dat het denk ik makkelijker zou zijn als ik er een range naam aan koppel, of zie ik dat verkeerd?

  10. #10
    Giga Honourable Senior Member
    Geregistreerd
    18 juli 2008
    Dan geef je die twee kolommen een naam bij 'Insert Name'.
    ____________
    Met vriendelijke groet,
    Harry

    Lag nooit om de keuzes van dien vraauw, bist ter zulf aine van....
    (Grunnegs-Gronings)

  11. #11
    Giga Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Wat heeft het bestand in #4 met de vraag te maken?
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  12. #12
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    9 september 2000
    Locatie
    Zuid-Holland
    Selecteer de betreffende kolommen en geef die bijvoorbeeld de naam Kolommen.
    En dan:
    Code:
    Private Sub Knop42_Klikken()
         Range("Kolommen").EntireColumn.Hidden = Not Range("Kolommen").EntireColumn.Hidden
    End Sub
    "It's hardware that makes a machine fast. It's software that makes a fast machine slow. "
    Op rechtstreekse vragen via email of privébericht reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  13. #13
    Junior Member
    Geregistreerd
    15 november 2010
    Quote Origineel gepost door edmoor Bekijk Bericht
    Selecteer de betreffende kolommen en geef die bijvoorbeeld de naam Kolommen.
    En dan:
    Code:
    Private Sub Knop42_Klikken()
         Range("Kolommen").EntireColumn.Hidden = Not Range("Kolommen").EntireColumn.Hidden
    End Sub

    Wederom weer precies wat ik zocht! Super bedankt voor je hulp en geduld.

  14. Dit topic is automatisch gesloten omdat er sinds vier maanden niet meer op gereageerd is.

    Indien gewenst kan de topicstarter een verzoek tot heropening indienen.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl

Regels
Help

Helpmij.nl en business

Partners
Sponsoren