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

Variabel print bereik via een macro instellen.

Status
Niet open voor verdere reacties.

samabert

Gebruiker
Lid geworden
27 mrt 2010
Berichten
308
Beste forumleden,

Is het mogelijk om een variabel print bereik in te stellen via een macro voor volgende voorbeeld (Test)?
De gegevens op dit blad komen van een ander blad waar telkens als er een wijziging in gebeurd een kopie naar dit voorbeeld wordt gemaakt met datum en tijdsaanduiding.

Als je het voorbeeld opent ga je direct naar het laatste blad met gegevens of via de knop ga naar het meeste recente blad.
In dit geval is de laatste rij, rij 251. De nu gewenste afdruk range zou A251:AE229 moeten zijn. Deze range wijzigt dus telkens er nieuwe data bijkomt.

Alvast bedankt,
Marc
 

Bijlagen

test deze eens:

Code:
Sub LastRowInOneColumn()
'Find the last used row in a Column: column A in this example
    Dim LastRow As Long
    With ActiveSheet
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With
      ActiveSheet.PageSetup.PrintArea = "A229:AE" & LastRow
       bereik = ActiveSheet.PageSetup.PrintArea
       MsgBox bereik
     Range(bereik).PrintPreview
End Sub
 
Hoi Cobbe,

Het werkt voor de helft, waar ik al blij mee ben.
ActiveSheet.PageSetup.PrintArea = "A229:AE" & LastRow
De rij met waarde A229 zoals in het voorbeeld is blijkbaar een vaste waarde (rij). Telkens er data bijkomt schuift hij netjes op naar de laatste rij. Maar hij begint de print range wel nog altijd vanaf de rij A229 en deze zou dus ook 21 rijen moeten meevolgen naar beneden. Voorbeeld volgende range is A276 (laatste rij) tot 21 rijen hoger enz.
Anders gaan we na een tijd dan meerder bladen printen in plaats van de allerlaatste.

Ik hoop dat mijn uitleg een beetje duidelijk is?

Toch al enorm bedankt,
Marc
 
Zet in A228 het woordje start en gebruik dan deze code:
Code:
Sub LastRowInOneColumn()
'Find the last used row in a Column: column A in this example
    Dim LastRow As Long
    With ActiveSheet
      Firstrow = .Range("A:A").Find("start").Row
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With
      ActiveSheet.PageSetup.PrintArea = "A" & Firstrow + 1 & ":AE" & LastRow
        bereik = ActiveSheet.PageSetup.PrintArea
         Cells(Firstrow, "A").ClearContents
          Cells(LastRow + 1, "A") = "Start"
            MsgBox bereik
     Range(bereik).PrintPreview
End Sub
 
Cobbe,

Ik heb je voorstel, start in cel A228, geprobeerd maar dit geeft volgende:

Ik sla het bestand eerst op met de nieuwe code erin
In cel A279 verschijnt nu “start” en niet meer in A228.
Wanneer je wil afdrukken krijg nu de range $A$277:$AE$278 te zien met gevolg dat je alleen het woord start op je print voorbeeld te zien krijgt.
Nog opgemerkt tijdens het testen dat wanneer je het bestand open laat staan en elke keer een nieuwe afdruk vraagt, de nieuwe afdruk range telkens met 1 rij opschuift. Dus dan $A278:$AE279.

Misschien een domme opmerking maar kan volgende niet? (nieuwe print Range = laatste rij met waarden en telkens inbegrepen 21 rijen naar boven)
Ik heb het voorbeeld met jouw laatste code bijgevoegd.

Mvg.
Marc
 

Bijlagen

Ik kan niets verkeerd in de code vinden.
Als je in A253 het woord start zet en dan via F8 de code doorloopt(lijntje per lijntje) zie telkens wat er gebeurt.

Het is natuurlijk niet de bedoeling dat je 5x of meer op de printbutton klikt want dan zoekt hij naar het woordje start en telt dan de gebruikte regels en dat is dan 1

Als je een nieuw blad ophaalt wordt dat onderaan bijgeschreven en staat het woordje start dus weer als begin van het afdrukbereik.
 
Cobbe,

Nu ben ik mee hoe het werkt. Zolang je de code laat draaien werkt alles super. M.a.w. telkens je een afdruk vraagt zet hij “start” netjes klaar voor de volgende afdruk van het nieuwe laatste blad. Doch, als je nu geen afdruk vraagt wat mogelijk is en er komen ondertussen nieuwe bladen bij verplaatst hij de start niet en krijg je een afdruk voorbeeld van meerdere bladen.
Ik had direct moeten vermelden dat er niet altijd een afdruk gaat worden gemaakt. Omdat dit enkel nodig is bij discussie.
Zie ik dit juist of sla ik de bal weer mis?

Met het resultaat tot hiertoe ben al ik heel blij want na veel zoeken op verschillende fora, niets in deze aard gevonden.

Mvg.
Marc
 
Dat maakt het natuurlijk een stuk makkelijker:
Code:
Sub LastRowInOneColumn()
'Find the last used row in a Column: column A in this example
    Dim LastRow As Long
    With ActiveSheet
       LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
         Firstrow = LastRow - 23
    End With
      ActiveSheet.PageSetup.PrintArea = "A" & Firstrow & ":AE" & LastRow
        bereik = ActiveSheet.PageSetup.PrintArea
          MsgBox bereik
     Range(bereik).PrintPreview
End Sub

Hoop dat het goed gaat.
 
Cobbe,

Top! Het werk helemaal. :thumb:
Heel erg bedankt voor de oplossing.

Mvg.
Marc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan