Hey Molly,
Ik ben zelf ook een hele voormiddag bezig geweest en had net een volledig 'update'-tekst geschreven waarvoor ik op het punt stond deze hier te plaatsen toen ik zag dat je een bericht had geplaatst met een nieuwe versie.
Ik zal dus eerst reageren op jouw bericht & bijgevoegd bestand en vervolgens mijn 'update'-tekst eronder plaatsen.
Met uitzondering van de aanpassingen inzake mijn vermelde details lijkt de code in je nieuwe versie globaal hetzelfde gebleven te zijn.
Ik zie bevoorbeeld nergens code om te achterhalen welke parochie verwerkt moet worden en dus ook geen code om aan te geven welke range verwerkt zal moeten worden op basis van die parochie. In de code worden nog steeds àlle rijen verwerkt. Als ik dit zou doen in mijn 'echte' bestand dan zouden dus alle parochies verwerkt worden wat dus geenszins de bedoeling is. Dus er zal sowieso ergens in de structuur iets aangepast moeten worden om te zorgen dat de correcte range verwerkt wordt.
Wat de 'Application.Caller' betreft heb ik deze al in meerdere projecten gebruikt en ik vind deze functie best wel nuttig. Ook in dit project zie ik er zeker het nut van omdat er eigenlijk in de volledige code maar enkele zaken verschillend zijn afhankelijk van welke knop wordt aangeklikt (maw vanuit welk bron-werkblad de code moet vertrekken).
Om mijn denkwijze te verduidelijken zal ik nu mijn 'update'-tekst plaatsen die ik deze middag had opgesteld.
***update***
Na een hele voormiddag bezig geweest te zijn met brainstormen, coderen, testen, …. Repeat…. ben ik tot het gewenste resultaat gekomen. Eén klein detail heb ik wel aangepast om het coderen iets ‘simpeler’ te maken
, namelijk ipv 6 doel-werkbladen gewoon standaard het werkblad “dataprint” (dat dan na het ‘opmaken/invullen’ de juiste naam moet krijgen en er vervolgens een nieuw werkblad “dataprint” moet aangemaakt worden).
Ik heb uiteindelijk 4 aparte subs… 1 hoofd-sub die aangeroepen wordt via een knop op één der 6 IDX-werkbladen en dan drie subs die aangeroepen worden vanuit de hoofd-sub. Ook heb ik 3 variabelen public gemaakt.
In de hoofd-sub wordt eerst via een ‘inputbox' gevraagd welke parochie verwerkt moet worden.
Via de “Select Case Application.Caller” worden via “Set” de 6 bron-werkbladen vastgelegd alsook een waarde gegeven aan de variabele ‘titel’.
Dan worden de kolom en rij variabelen gedefinieerd voor het 'dataprint'-werkblad en een loop opgestart voor de in te lezen range (gebaseerd op de gekozen parochie in het gekozen bron-werkblad).
Via een if-statement wordt dan bepaald of er al dan niet een nieuwe pagina begonnen moet worden en zoja wordt de 1e externe sub aangeroepen (nl voor de algemene lay-out), vervolgens worden de 4 eerste rijen gevuld met de titel, de parochie, de vaste waarde ‘anno’ en het jaartal waarna dan de de 2e sub word aangeroepen (nl voor de specifieke layout).
Onder deze if-statement wordt dan de 3e en laatste sub aangeroepen (nl het inlezen van de gegevens op het bron-werkblad).
Bij terugkeer naar de hoofd-sub worden dan de ingelezen gegevens weggeschreven op het werkblad “dataprint”.
Dit alles is momenteel nog vrij robuust en dien ik nog wat te finetunen waar mogelijk en vervolgens dien ik dan nog enkel het gedeelte te coderen voor het wijzigen van de naam van het werkblad “dataprint” naar de correcte naam en het aanmaken van een nieuw werkblad “dataprint”.
Het enige wat ik hiervoor nog moet weten eigenlijk is, indien het mogelijk is, hoe ik de pagina-instelling (met name de marges en de voettekst) van het werkblad “dataprint” via VBA kan laten uitvoeren.
Deze pagina-instellingen zijn van cruciaal belang voor enerzijds de algemene weergave maar anderzijds in het bijzonder voor het fysiek uitprinten.
Zodra mijn huidige code gefinetuned is zal ik nog eens een recente versie van mijn bestand plaatsen.
Ongeacht welke aanpak er uiteindelijk zal gebruikt worden en/of in hoeverre er nog aanpassingen zullen plaatsvinden, mijn nieuwe code is grotendeels gebaseerd op jouw aanpak uit jouw bericht #26 en op enkele van jouw codestructuren. Dus zonder die hulp/aanzet/oplossingen zou ik nooit tot dit resultaat kunnen komen zijn.
Groetjes,
Bieke