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

bladen printen door macro

Status
Niet open voor verdere reacties.

Bakkerbakgraag

Gebruiker
Lid geworden
24 okt 2015
Berichten
66
Beste mensen,
ooit printte ik werkbladen voor mijn leerlingen met de onderstaande macro:

Code:
Sub printen()


Range("A2").Value = "1"

For i = 1 To [A4] 'aantal werkbladen
    With Sheets("opdrachtbladen") 'het blad waar de gegevens staan
        .[A2] = i 'de cel waar het nummer van de leerling ingevuld moet worden
    .PrintOut
    End With
Next i
 
End Sub

Voorheen werkte deze macro perfect, maar vanaf een bepaald moment print hij alleen nog maar het eerste blad.
Kan iemand mij helpen?

Bij voorbaat dank en met vriendelijke groet.
 
De code geeft alleen opdracht om Sheets("opdrachtbladen") uit te printen, met de cel A2 steeds een ander leerling nummer.

Staat je afdrukbereik goed?

Met een klein anoniem voorbeeldbestandje wordt je sneller en beter geholpen.
 
Laatst bewerkt:
Beste Alphamax,
het bestand is te ingewikkeld om "uit elkaar te trekken", dus ik leg zo goed mogelijk uit wat de bedoeling is.

Op het opdrachtblad staan gegevens van leerlingen, elke leerling heeft vanzelfsprekend andere gegevens.
In cel A2 wordt een leerlingnummer ingevuld waarna in de rest van het opdrachtblad door een formule de gegevens van deze leerling worden opgehaald.
Dit blad wordt geprint, waarna het volgende leerlingnummer ingevuld wordt, het volgende opdrachtblad wordt geprint enz.
Net zolang totdat alle leerlingnummers geweest zijn (dit aantal staat aangegeven in cel A4).

Handmatig printen lukt prima, het ophalen van de gegevens dus ook.
Ik heb gecheckt of de gegevens in cel A2 en A4 kloppen, dit is ook het geval.

Het gaat alleen fout bij het printen, alleen het blad met celwaarde A2=1 wordt geprint.
Heb me ooit laten vertellen dat het door een update van Windows komt, maar daar kom ik ook niet ver mee.

Bij voorbaat dank voor je hulp!
 
Maak even een voorbeeldbestandje met hoe het geheel in elkaar steekt.
 
Doet precies wat ik wil.
Natuurlijk heb ik de standaard "microsoft print to pdf" gebruikt om geen papier en inkt te verknoeien.
 

Bijlagen

  • helpmij bakkerbakgraag print.zip
    895,9 KB · Weergaven: 32
Laatst bewerkt:
Doet precies wat ik wil.
Natuurlijk heb ik de standaard "microsoft print to pdf" gebruikt om geen papier en inkt te verknoeien.

Dank voor je antwoord, dit ziet eruit alsof het werkt. Bij mij is dat echter niet het geval. Misschien heb ik mijn code teveel uitgekleed en ontstaat de fout ergens anders. Er zit nog een stukje voor en een stukje na. Dit is de hele code, ziet iemand wat er fout gaat?

Code:
Sub bladenprinten()
Range("A2").Value = "1"
keuze = MsgBox("Hiermee print je alle bladen. Weet je dit zeker?", vbYesNo)
If keuze = vbNo Then
GoTo einde
End If

For i = 1 To [A4] 'aantal bladen
With Sheets("werkbladen") 'het blad waar de gegevens staan
.[A2] = i 'de cel waar het nummer van de leerling ingevuld moet worden
.PrintOut
End With
Next i

Sheets("extra").PrintOut
einde:
End Sub

Wederom dank.
 
Zijn "opdrachtbladen" nu "werkbladen" geworden?
en
Hoe zit het met het printbereik?

Met een uitgekleed anoniem voorbeeldbestandje wordt je sneller en beter geholpen.
 
Laatst bewerkt:
ik zou eerst proberen met die doevents.
Als dat niet lukt, dan zou ik de macro laten pauzeren voor 2 sec.
Code:
   For i = 1 To [A4]                                            'aantal bladen
      With Sheets("werkbladen")                                 'het blad waar de gegevens staan
         .[A2] = i                                              'de cel waar het nummer van de leerling ingevuld moet worden
         DoEvents
         Application.Wait DateAdd("s", 2, Now)
        .PrintOut
      End With
   Next i
 
Zo?
Code:
Sub printen()

    For i = 1 To Sheets("[COLOR="#FF0000"]printopdracht[/COLOR]").Range("A4")    'pas de naam van het blad eventueel aan.
        With Sheets("werkbladen")                                                                            'het blad waar de gegevens staan
            .[A2] = i                                                                                                  'de cel waar het nummer van de leerling ingevuld moet worden
            .PrintPreview                                                                                           '. PrintOut
        End With
    Next i
End Sub
 
Laatst bewerkt:
Beste allemaal,
het probleem is opgelost, dank voor al jullie hulp.

Met schaamrood op mijn kaken moet ik bekennen dat het probleem vele malen eenvoudiger was dan ik aanvankelijk dacht. Bij het "uitkleden" van mijn bestand zag ik dat de del celverwijzing A4 naar het aantal bladen cel A6 had moeten zijn. Desondanks kwam ik erachter door het uitkleden van het bestand. Dank voor de raad en de moeite die jullie er allen in gestoken hebben.
Ik zet de vraag op "opgelost".
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan