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

Meervoudige selectie printen op een blad.

Status
Niet open voor verdere reacties.

RobYol

Gebruiker
Lid geworden
3 nov 2009
Berichten
63
Heb een rooster gemaakt (MEDE DANKZIJ DIT FORUM:thumb:) wat tegen zijn einde loopt kwa ontwikkeling. Heb alleen een print probleem. Het rooster heeft een vast aantal rijen en kolommen en is dus voor iedere week hetzelfde. Wil graag een knop hebben die een macro aanstuurt om het rooster te printen. Met als voorwaarde dat de lege rijen niet mee worden geprint, zodat ik een mooi rooster krijg waarbij alleen de ingevulde rijen worden geprint en netjes onder elkaar staan en het zou nog mooier zijn als dit rooster dan zo wordt vergroot dat het precies op een A4 past.

Alvast bedankt.

Gr Robert:thumb::thumb:
 

Bijlagen

Goedemorgen Robert,

Deze zou het moeten doen :

Code:
Sub printblad()
    Dim r As Range
    For Each r In Range("AE8:AE47")
        If r.Value <= 0 Then
            r.EntireRow.Hidden = True
        Else
            r.EntireRow.Hidden = False
        End If
    Next
    With ActiveSheet.PageSetup
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlLandscape
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    ActiveWindow.SelectedSheets.PrintPreview
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
End Sub

Joske
 
Wat doe ik fout.

Beste Joske,

Jou code werkt maar heb wat toegevoegd wat niet werkt wat doe ik fout?

Sub printblad()
Dim r As Range
For Each r In Range("A8:A47")
If r.Value <= "" Then
r.EntireRow.Hidden = True
Else
r.EntireRow.Hidden = False
End If
Next
With ActiveSheet.PageSetup
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Range("A1:AE47").Select
ActiveWindow.SelectedSheets.PrintPreview
ActiveWindow.SelectedSheets.PrintOut Copies:=1
r.EntireRow.Hidden = False
End Sub

Range("A1:AE47").Select HIERBIJ doet hij niks hij moet alleen deze range printen.
r.EntireRow.Hidden = False Na printen moet hij alle kolommen weer zichtbaar maken.

Ik ben teverden maar ben (misschien te) kritisch het werkt op mijn laptop langzaam is er een snellere manier. Je zit echt te wachten totdat hij elke rij heeft gehad.

Gr Robert en alvast bedankt.
 
Robert,

Nu zal het wat sneller gaan, daar het scherm niet geupdate wordt.

Joske

Code:
Sub printblad()
    Application.ScreenUpdating = False
    Dim r As Range
    For Each r In Range("A8:A47")
        If r.Value <= "" Then
            r.EntireRow.Hidden = True
        Else
            r.EntireRow.Hidden = False
        End If
    Next
    With ActiveSheet.PageSetup
        .CenterHorizontally = True
        .CenterVertically = False
        .Orientation = xlLandscape
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    Range("A1:AE47").PrintOut copies:=1
    Rows("1:47").EntireRow.Hidden = False
    Application.ScreenUpdating = True
End Sub
 
Robert,

Nu zal het wat sneller gaan, daar het scherm niet geupdate wordt.

Joske

Code:
Sub printblad()
    Application.ScreenUpdating = False
    Dim r As Range
    For Each r In Range("A8:A47")
        If r.Value <= "" Then
            r.EntireRow.Hidden = True
        Else
            r.EntireRow.Hidden = False
        End If
    Next
    With ActiveSheet.PageSetup
        .CenterHorizontally = True
        .CenterVertically = False
        .Orientation = xlLandscape
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    Range("A1:AE47").PrintOut copies:=1
    Rows("1:47").EntireRow.Hidden = False
    Application.ScreenUpdating = True
End Sub

Werkt prima. SUPER bedankt weer. Heb gelijk regel:

Application.ScreenUpdating = False

toegepast bij mijn andere macro's zoals wissen en kopieren gaat een stuk sneller nu.

TOP:thumb::thumb::thumb:
 
Probeer deze eens uit als je wil.
Code:
Sub printblad()
    Application.ScreenUpdating = False
    With Sheets("Blad1")
        For Each cl In .[A8:A47]
            cl.EntireRow.Hidden = IIf(cl.Value = "", True, False)
        Next
        With .PageSetup
            .PrintArea = [A1:AE47]
            .CenterHorizontally = True
            .CenterVertically = False
            .Orientation = xlLandscape
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        .PrintOut , , 1
        .Rows("1:47").EntireRow.Hidden = False
    End With
    Application.ScreenUpdating = True
End Sub
Zet je de vraag dan ook op opgelost
 
Probeer deze eens uit als je wil.
Code:
Sub printblad()
    Application.ScreenUpdating = False
    With Sheets("Blad1")
        For Each cl In .[A8:A47]
            cl.EntireRow.Hidden = IIf(cl.Value = "", True, False)
        Next
        With .PageSetup
            .PrintArea = [A1:AE47]
            .CenterHorizontally = True
            .CenterVertically = False
            .Orientation = xlLandscape
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        .PrintOut , , 1
        .Rows("1:47").EntireRow.Hidden = False
    End With
    Application.ScreenUpdating = True
End Sub
Zet je de vraag dan ook op opgelost

Beste Warm Bakkertje,

Deze macro moet voor ieder werkblad kunnen gelden en deze is gerelateerd aan blad1. Moet dan "With Sheets("Blad1")" "With activesheet" worden??????

Gr Robert:thumb:
 
Code:
Sub printblad()
    Application.ScreenUpdating = False
    With ActiveSheet
        For Each cl In .[A8:A47]
            cl.EntireRow.Hidden = IIf(cl.Value = "", True, False)
        Next
        With .PageSetup
            .PrintArea = [A1:AE47]
            .CenterHorizontally = True
            .CenterVertically = False
            .Orientation = xlLandscape
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        .PrintOut , , 1
        .Rows("1:47").EntireRow.Hidden = False
    End With
    Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Code:
Sub printblad()
    Application.ScreenUpdating = False
    With ActiveSheet
        For Each cl In .[A8:A47]
            cl.EntireRow.Hidden = IIf(cl.Value = "", True, False)
        Next
        With .PageSetup
            .PrintArea = [A1:AE47]
            .CenterHorizontally = True
            .CenterVertically = False
            .Orientation = xlLandscape
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
        .PrintOut , , 1
        .Rows("1:47").EntireRow.Hidden = False
    End With
    Application.ScreenUpdating = True
End Sub

Hij zegt dat variabel cl niet is gedefinieerd.
Dat hoeft toch niet?
 
Als je bovenaan Option Explicit hebt staan dan wel. Zet er eens een aanhalingsteken voor en probeer nog eens
 
Hij zegt dat variabel cl niet is gedefinieerd.
Dat hoeft toch niet?

Er staat bovenaan in de module Option Explicit.

Waar moeten dan de aanhalingstekens komen (") deze bedoel je toch?

Want ik zit nu te gissen.

Gr Robert
 
Beste RobYol ;)

Verwijder Option Explicit.

OF

Zet de volgende regel juist onder Application.ScreenUpdating = False

Code:
Dim cl As Range

Met het haakje bedoeld Warme bakkertje ' ervoor.

Groetjes Danny. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan