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

printen tabbladen alleen als deze zijn ingevuld

Status
Niet open voor verdere reacties.

Boelie72

Gebruiker
Lid geworden
12 mei 2009
Berichten
22
Voor mijn werk heb ik een urensysteem gemaakt waar elke werknemer zijn/haar uren op invuld. Iedereen heeft een eigen tabblad met daarin de 12 maanden. De werknemers hebben een ID die gelijk zijn aan de tabbladen. Nu wil mijn bazin graag van elke werknemer per maand een uitdraai van de uren voor haar eigen administratie en om bij de loonstrook te voegen. Het is een bedrijf met behoorlijk wat werknemers dat varieert. De ene keer zijn het er 20 de andere keer 35. Daarvoor heb ik 40 tabladen gemaakt. d.m.v. afdrukbereik per maand heb ik een macro gemaakt. Maar deze print alle bladen ook die leeg zijn. Hoe kan ik het nu zo maken dat hij alleen de ingevulde bladen print. per maand. Nu is de code zo.

Sub printjanuari()
'
' printjanuari Macro
'

'
Sheets("1").Select
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", _
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25")).Select
Sheets("1").Activate
Sheets(Array("26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", _
"39", "40")).Select Replace:=False
Application.Goto Reference:="Afdrukbereikjanuari"
Selection.PrintOut From:=1, To:=1, Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End Sub

Misschien kan het met een dialoog venster. of met een IF Else functie. Maar hoe maak ik deze. Graag hulp.
 
Geen idee waar 'afdrukbereikjanuari' voor staat, maar zo te zien heb je twaalf codes (voor iedere maand één).
Het adres kan wel tekst of formules bevatten, er wordt pas afgedrukt als er getallen staan.

Code:
Sub printjanuari()
 '
 ' printjanuari Macro
Dim sh As Worksheet
Application.ScreenUpdating = False
 For Each sh In Sheets
  sh.PageSetup.PrintArea = sh.Range("a1:c10").Address    'het adres voor januari
    If Application.CountIfs(sh.Range("a1:c10"), ">0") > 0 Then sh.PrintPreview
 Next sh
End Sub
 
Bedankt voor je reactie,

Ik heb idd 12 codes gemaakt. Die afdrukbereik had ik per maand gemaakt. die ik dan op de hele afdrukrij toepas. Omdat het anders niet lukte om van alle tabbladen de maand januari uit te printen.

Elk tabblad bestaat ook weer uit 12 pagina einden, waar dan elk nummer voor een maand staat. Ik wil het bestandje wel ff bijvoegen anders. Ik ben alweer aan het sleutelen geweest omdat de vorige macro ook niet werkte.

Het lukt niet om het te uploaden, er is een fout opgetreden

Wat doet jou code precies? Kan ik wel kiezen uit welke tabbladen hij moet kiezen?
 
Geen idee waar 'afdrukbereikjanuari' voor staat, maar zo te zien heb je twaalf codes (voor iedere maand één).
Het adres kan wel tekst of formules bevatten, er wordt pas afgedrukt als er getallen staan.

Code:
Sub printjanuari()
 '
 ' printjanuari Macro
Dim sh As Worksheet
Application.ScreenUpdating = False
 For Each sh In Sheets
  sh.PageSetup.PrintArea = sh.Range("a1:c10").Address    'het adres voor januari
    If Application.CountIfs(sh.Range("a1:c10"), ">0") > 0 Then sh.PrintPreview
 Next sh
End Sub

Ok heb je code geprobeerd. ik snap wat het doet. Hij zoekt in de velden a1:c10 van alle bladen of er iets is ingevuld. Dit kan ik dan aanpassen per maand en voor de juiste cel bepalen of er een 0 staat of een ander getal. Dit moet lukken.

Ik krijg vervolgens een print preview. Maar kan dat ook zo ingesteld worden dat alles in 1 keer geprint wordt. Anders moet ik 25x op print drukken.
 
De printpreview is voor de test.
Als het de test heeft doorstaan maak je van printpreview → printout.
 
Ok, gelukt zover!! Zo heb ik het nu ingesteld.

Code:
Sub print_januari()
 '
 ' print_januari Macro
Dim sh As Worksheet
Application.ScreenUpdating = False
 For Each sh In Sheets
  sh.PageSetup.PrintArea = sh.Range("a1:r36").Address    'het adres voor januari
    If Application.CountIfs(sh.Range("r6"), ">0") > 0 Then sh.PrintPreview
 Next sh
End Sub

Graag zou ik de macro alleen laten zoeken in de tabbladen met de naam "1" t/m "40" als dat mogelijk is. In hetzelfde werkmap staan ook nog andere tabbladen. Op dit moment staat er in de betreffende celR6 nog geen getal in de bladen. maar dit zou een keer kunnen gebeuren.
Kan ik ipv de printview ook een directe print opdracht geven zoals
Code:
If Application.CountIfs(sh.Range("r6"), ">0") > 0 Then sh.PrintOut
 Next sh
 
Iets aangepast.
Als het maar om cel R6 gaat of er een getal is geplaatst gebruik ik liever niet de trage worksheetfunction.

Over Printout schreef ik al in mijn vorig bericht. ;)
Code:
Sub printjanuari()
 '
 ' printjanuari Macro
Dim sh As Worksheet
Application.ScreenUpdating = False
 For Each sh In Sheets
 If IsNumeric(sh.Name) Then
  sh.PageSetup.PrintArea = sh.Range("a1:r36").Address
    If Not IsEmpty(sh.Range("r6")) And IsNumeric(sh.Range("r6")) Then sh.PrintOut
  End If
 Next sh
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan