Vaste kolommen, variabele rijen

Status
Niet open voor verdere reacties.

Ron001

Gebruiker
Lid geworden
4 dec 2017
Berichten
384
Allen

Ik heb voor een andere file te printen een code die werkt als volgt:

Een bepaalde range wordt verdeeld over een A4 blad, inclusief header

Voor file in bijlage te printen gebruik ik ook terug deze code, alleen is er één verschil…

1) De kolommen hebben steeds dezelfde waarde, tot kolom I (order)
2) De rijen zijn variabel, hangt af van de geplande werken

Kan er iemand helpen ivm een code voor twee bovenstaande?

Bekijk bijlage GEPLANDE werken.xlsm

Bedankt!

Code:
       With ActiveSheet().PageSetup
        .Zoom = False
        .FitToPagesTall = 1
        .FitToPagesWide = 1
        End With
      ActiveSheet.PageSetup.CenterVertically = True
      ActiveSheet.PageSetup.CenterHorizontally = True
      ActiveSheet.PageSetup.CenterHeader = "&""Calibri,bold""&40" & "WEEK " & Cells(3, 2)
      ActiveSheet.PageSetup.CenterFooter = "&""Calibri""&20" & "Naam "
      ActiveSheet.PageSetup.PaperSize = xlPaperA4
      ActiveSheet.PageSetup.Orientation = xlLandscape
 
vba project is beveiligd met een wachtwoord :(
 
De vraag gaat over printen en in de bijlage staat alleen een mail-code?
 
In een andere file gebruik ik bovenstaande code om een vast bereik te printen ("A1:AB74").
In de file in bijlage verschilt dus telkens het aantal rijen, in dit geval tot rij 8...
Maar dit kan morgen tot rij 16 of 25 of 4 of... zijn...
Dus mijn vraag is hoe ik de "variabel' aantal rijen passend kan maken op A4 formaat.
Code moet dus gaan kijken tot welke rij file gevuld is en dit aantal dan centreren.

Bedankt!
 
je kan ook een variabel bereik selecteren en dat printen.
 

Bijlagen

  • helpmij (1).xlsm
    100,7 KB · Weergaven: 33
@ Emields

Super bedankt, dit is wat ik voorlopig zoek...
Nu ga ik dit nog wat proberen aan te passen naar mijn idee...
 
Ik heb dus de code een beetje aangepast naar mijn goeddunken.
Heb nog 2 vragen:
1) Ik zou kolom A, E & F in vet willen afdrukken
2) Is het mogelijk om 2 Centerfooders te gebruiken?
1ste met naam van onze dienst.
2de “Geprint door “Replace(Environ("username"), ".", " ")” waar ik van de eerste en laatste naam/woord van de beginletter een hoofdletter wil maken.
BV: Ben Segers – Rik van de Weghe op ‘datum + tijd’


Bekijk bijlage helpmij (1).xlsm
 
1. Je kan gewoon die kolommen in bold zetten


2. 2 centerfooders kan niet maart je kan wel leftfooder en centerfooder gebruiken.
 
Zet variabelen of berekeningen niet tussen "" dan wordt het als tekst gezien. Ik weet niet waar je de dienst vandaan wil halen maar zo krijg je twee regels in de CenterFooter

Code:
Naam = "Dienst"
.CenterFooter = "&""Calibri""&20" & Naam & Chr(10) & StrConv(Replace(Environ("username"), ".", " "), 3)

Voor een variabel bereik is dit voldoende
Code:
Range("A1:I" & Cells(Rows.Count, 1).End(xlUp).Row).PrintPreview 'Printout
 
Laatst bewerkt:
Allebei bedankt voor de goede service!
VenA’s variabel bereik code ga ik nog testen…
Ik heb nu een amateurcode ineengeknutseld die wel ongeveer doet wat ik wil…
Nog één probleem en één vraag.

Probleem
Ik roep via knop een userform op om te bepalen welk formaat moet afgedrukt worden,
A3 of A4 of Cancel.
Achter A3 zit de code al, als ik deze “afprint” gebeurt dit, maar blijft de userform staan en zit Excel vast…
Met Userform1.Hide krijg ik deze niet weg…

Vraag
Hoe kan ik voorkomen als iemand A3 printen drukt en er alleen maar een A4 printer aanwezig is, dat er bv komt MsgBox “Geen A3 printer aanwezig”
Hoe kan ik dit herkennen/controleren?


Bekijk bijlage Userform helpmij.xlsm
 
Dat userform probleem is opgelost.


dat van die printer begrijp ik niet
 

Bijlagen

  • Userform helpmij (1).xlsm
    20,4 KB · Weergaven: 33
Bedankt!

Sommige mensen hebben een printer ter beschikking die A3 en A4 kan printen, sommige alleen A4...
Dus als de mensen met alleen een A4 printer ter beschikking op de knop "Printen A3" duwen dit niet zal lukken omdat er geen A3 is.
Hoe dit opvangen?
 
Wat is dit voor schrijfkunst?


Code:
Range("I1000").End(xlUp)[COLOR=#ff0000].Offset(, 0)[/COLOR].Activate
     Set rng = ActiveCell
     sRange = rng.Address
    With ActiveSheet[COLOR=#ff0000]()[/COLOR].PageSetup
        .Zoom = False

Code:
Set rng = Cells(Rows.Count, 9).End(xlUp)
With ActiveSheet.PageSetup
        .Zoom = False


en dit achterstevoren.

Code:
Range(sRange & ":A1").PrintPreview

Weg met Activate, Activecell en de variabelen.
Alles in een keer.
Code:
Range("A1", cells(rows.count,9).end(xlup))

Geen 'Userform1.Hide' maar 'Unload me'.

Voor de Papersize kun je 'on error resume next' zetten.
Hier de gehele aangepaste code.
Code:
Private Sub cmb_a3_Click()
Unload Me
Application.ScreenUpdating = False
With ActiveSheet
 .Range("A2:A40,e2:f40").Font.Bold = True
    
    With .PageSetup
        .PrintArea = .parent.Range("A1", .parent.Cells(Rows.Count, 9).End(xlUp)).Address
        .Zoom = False
        .FitToPagesTall = 1
        .FitToPagesWide = 1
        .CenterVertically = True
        .CenterHorizontally = True
        .CenterHeader = "&""Calibri,bold""&35" & "Geplande"
        .Orientation = xlLandscape
        .CenterFooter = "&""Calibri""&20" & " Dienst &""Calibri""&10" & vbLf & "Geprint door " & StrConv(Replace(Environ("username"), ".", " "), 3) & " op " & "&D"
     On Error Resume Next
        .PaperSize = xlPaperA3
       If Err.Number <> 0 Then .PaperSize = xlPaperA4
     On Error GoTo 0
    End With
    
    .PrintPreview
  .Range("A2:A40,e2:f40").Font.Bold = False
 End With
End Sub
 
Laatst bewerkt:
Ga eerst testen voordat je met het volgende vraagstuk aan de gang gaat. Nu zie ik weer dezelfde puinhoop als in het vorige bestand.

Volgens mij kan je het printen beter via het 'printer dialog' afhandelen.
Code:
Application.Dialogs(xlDialogPrint).Show
 
Laatst bewerkt:
@ HSV

Kan je hier iets meer uitleg geven aub? De rest begrijp ik...Na lang bestuderen...

Code:
     On Error Resume Next
        .PaperSize = xlPaperA3
       If Err.Number <> 0 Then .PaperSize = xlPaperA4
     On Error GoTo 0

Van VenA heb ik getest, kan je handmatig printer kiezen...
 
Laatst bewerkt:
Vba heeft ook een F1 knop; De Help namelijk.

Als er geen A3 printer aanwezig is krijg je een foutmelding in de code.
On error resume next gaat daar aan voorbij maar noteert wel de foutnummer.

Als het geen 0 (nul) is 'If err.number <> 0' print dan op A4 anders gewoon A3.

Mag ook zo.
if err.number > 0 then ........
 
@HSV, Ik heb hier geen A3 printer en kan het dus niet testen. Stuurt jouw code direct de juiste printerlade aan of zijn de printers tegenwoordig zo intelligent dat ze het zelf wel snappen?
 
Ik heb ook geen A3 printer, maar als ik een standaard A3 printer aanstuur zal het net zo werken als je vaste printer
Code:
.PaperSize = xlPaperA3

Als ik het niet heb zal het naar de..
Code:
 .PaperSize = xlPaperA4

vaste A4 printer gaan toch?

Ik heb geen flauw idee.
 
Als er een A4 printer aanwezig is, print automatisch A4
Als er een A3 printer aanwezig is, print automatisch A3

Als er geen A3 is, enkel A4 en je neemt A3 drukt hij dit zonder foutmelding af op A4.

Heb via een userform geprobeerd een "foutmelding", ' Geen A3 printer aanwezig, A4 wordt afgedrukt' toegevoegd.
Maar deze werkt niet omdat de code geen foutnummer geeft (dus ook geen foutmelding)

Temp blijft steeds 0 als ik de code handmatig doorloop.

Temp = err.number geeft dus geen foutmelding
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan