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

VBA printen - leeg werkblad overslaan?

Status
Niet open voor verdere reacties.

ras84

Nieuwe gebruiker
Lid geworden
8 apr 2019
Berichten
4
Goedemiddag,

Ik heb een simpele vba die meerdere werkbladen afdrukt. (voor voorbeeld code ingekort)

Op alle werkbladen wordt d.m.v. een afdrukbereik aangeven wat er geprint moet worden.

Zo nu en dan zitten er werkbladen tussen die leeg blijven (Wel formules maar d.m.v. afdrukbereik wordt dit niet uitgeprint. Hoeft ook niet)
Hij print nu een lege pagina uit.

Maar is er iets wat ik in de code kan toevoegen waardoor hij lege werkbladen niet gaat printen?

Of zou ik dit in het afdrukbereik moeten/kunnen aanpassen? Deze retourneert bij lege pagina een 'onwaar'.


Ik heb de volgende code:


Code:
Sub Afdrukken_Lijsten()
'
' Afdrukken_Lijsten Macro
'
' Sneltoets: Ctrl+b

    If MsgBox("Je gaat nu alle lijsten printen" & vbCrLf & _
            "Weet je het zeker?", vbQuestion + vbYesNo + vbDefaultButton1) = vbNo Then
        Exit Sub
    End If
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    Sheets("Blad2").Select
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    Sheets("Blad3").Select
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    Sheets("Blad4").Select
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
    End Sub


Alvast bedankt voor de hulp!
 
Zo wellicht:
Code:
Sub Afdrukken_Lijsten()'
' Afdrukken_Lijsten Macro
'
' Sneltoets: Ctrl+b
    If MsgBox("Je gaat nu alle lijsten printen" & vbCrLf & _
            "Weet je het zeker?", vbQuestion + vbYesNo + vbDefaultButton1) = vbNo Then
        Exit Sub
    End If
    Afdrukken_Lijst ("Blad1")
    Afdrukken_Lijst ("Blad2")
    Afdrukken_Lijst ("Blad3")
End Sub

Sub Afdrukken_Lijst(mySheet)
    Dim rng As Range
    With Sheets(mySheet)
        'Controleer of printarea bestaat
        On Error Resume Next
        Set rng = Range(.PageSetup.PrintArea)
        On Error GoTo 0
        If rng Is Nothing Then Exit Sub
        If rng.Count > rng.SpecialCells(xlCellTypeBlanks).Count Then
            .PrintOut From:=1, To:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False
        End If
    End With
End Sub
 
Of zoiets:
Code:
Sub Afdrukken()
    If IsBladLeeg("Blad1") Then
        MsgBox "Blad niet afdrukken"
    Else
       [COLOR="#008000"] 'Je afdruk code[/COLOR]
    End If
End Sub

Function IsBladLeeg(Blad As String) As Boolean
    IsBladLeeg = True
    On Error GoTo EndIsBladLeeg
    c = Cells.SpecialCells(2).Count
    IsBladLeeg = False
EndIsBladLeeg:
End Function
 
Werkt perfect, moest nog een kleine aanpassing doen in het aantal pagina's maar was ik ook vergeten te vermelden.


Bedankt!!
 
Zou dit niet volstaan ?

Code:
Sub M_snb()
 For Each it In Sheets
    If Len(it.PageSetup.PrintArea) > 0 Then it.PrintOut
 Next
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan