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

Geselecteerde "(Print)Range" onthouden

Status
Niet open voor verdere reacties.

jansbl

Gebruiker
Lid geworden
1 mrt 2007
Berichten
86
Ik heb een workbook dat kan bestaan van een tiental tot meer dan 100 pagina's.
Het gebeurt me (soms) dat ik alle pagina's afdruk en er daarna achter kom dat ik heb vergeten een of twee datums in te vullen.

Die datums staan op 1 blad.

Nu dacht ik daar het volgende op gevonden te hebben:
Eerst controleren of de datums zijn ingevuld en dan eventueel een inputbox om daar de datums in te vullen.

Ik heb dat als volgt gedaan:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
On Error Resume Next
Sheets("5 Gegevens").Select
Dim strdag
If Range("AY41") = "" Then
Range("AY41").Select
strdag = InputBox("Voer eerst de datum in, voor het printen", "Datum invullen !!!!", "dd mm jjjj")
Range("AY41") = strdag
End If
If Range("AY42") = "" Then
Range("AY42").Select
strdag = InputBox("Voer eerst de datum in, voor het printen", "Datum invullen !!!!", "dd mm jjjj")
Range("AY42") = strdag
End If

End Sub


De controle werkt prima. Ook het invullen.
Wat er echter ontbreekt is het volgende: Ik ga niet terug naar het eerdere printbereik (geslecteerde pagina's)!
Voor het selecteren van Sheets("5 Gegevens"), moet ik het printbereik (wat ik eerder had geselecteerd) in een variabele hebben.
Na het uitvoeren van de datum-invul-controle moet ik weer terug naar het van te voren geslecteerde bereik. Anders wordt alleen de pagina "5 Gegevens" afgedrukt, omdat die immers in de routine was geselecteerd.

Gaarne een idee hoe ik het printbereik vastleg en daarna naar dat bereik terug ga.

m.vr.gr.,
Jans
 
Jans,

Volgens mij gaat hij het doen, als je al de Select uit je code haalt :

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
On Error Resume Next
    If Sheets("5 Gegevens").Range("AY41") = "" Then
        strdag = InputBox("Voer eerst de datum in, voor het printen", "Datum invullen !!!!", "dd mm jjjj")
        Sheets("5 Gegevens").Range("AY41") = strdag
    End If
    If Sheets("5 Gegevens").Range("AY42") = "" Then
        strdag = InputBox("Voer eerst de datum in, voor het printen", "Datum invullen !!!!", "dd mm jjjj")
        Sheets("5 Gegevens").Range("AY42") = strdag
    End If
End Sub

Joske
 
Jans,

Volgens mij gaat hij het doen, als je al de Select uit je code haalt :

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
On Error Resume Next
    If Sheets("5 Gegevens").Range("AY41") = "" Then
        strdag = InputBox("Voer eerst de datum in, voor het printen", "Datum invullen !!!!", "dd mm jjjj")
        Sheets("5 Gegevens").Range("AY41") = strdag
    End If
    If Sheets("5 Gegevens").Range("AY42") = "" Then
        strdag = InputBox("Voer eerst de datum in, voor het printen", "Datum invullen !!!!", "dd mm jjjj")
        Sheets("5 Gegevens").Range("AY42") = strdag
    End If
End Sub

Joske

Hi Joske,
Bedankt,
Maar als ik het op die manier doe, worden niet de andere pagina's ge-update met de datums welke dan op Sheets("5 Gegevens") worden ingevuld.

Als ik onder de laatste "End if" zet "Application.calculate" worden de te printen pagina's nog ge-update voordat ze worden geprint.

Jans
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan