Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / January 2007

Tip: Looking for answers? Try searching our database.

Can't get PageSetup to work

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
relative_virtue@hotmail.com - 18 Jan 2007 10:02 GMT
Guys,

I'm tearing my hair out over this one - I just can't see what I'm doing
wrong.

I'm trying to alter the PageSetup properties in a Workbook_BeforePrint
event, but no matter what I do I can't seem to get VBA to actually
change the settings.  After the code is run, the page looks the same as
it always has.  I've run a watch on the PageSetup object and its
properties seem unaffected by my code.  Yet ActiveSheet.Name returns
the name of the sheet I'm trying to alter.  What's going on??

' QUOTE

' Code in Module1
' -----

Public PrintMini as Boolean

Sub TogglePrint()

 PrintMini = True
 ActiveSheet.PrintOut preview:=True

End Sub

' Code in ThisWorkbook
' -----

Sub Workbook_BeforePrint(Cancel As Boolean)

 Application.ScreenUpdating = False

 With ActiveSheet.PageSetup

   GetLastRow ActiveSheet ' Returns a value for public integer LastRow

   If PrintMini = True Then
     .PrintArea = "A1:I" & LastRow + 4
     PrintMini = False
   Else
     .PrintArea = "A1:AF" & LastRow + 4
   End If

   .FitToPagesTall = Int(LastRow / 40) + 1
   .Zoom = False
   .FitToPagesWide = 1
   .CenterHorizontally = True
   .Orientation = xlLandscape
   .PrintTitleRows = ActiveSheet.Range("1:2").Address

 End With

 Application.ScreenUpdating = True

End Sub

' END QUOTE

Thanks in advance,

Tristan
NickHK - 18 Jan 2007 10:16 GMT
Your code certainly effects the page layout, but without know the value of
LastRow, hard to say what should happen.
Add a "Debug.Print LastRow" to see if it the expected value.

NickHK

> Guys,
>
[quoted text clipped - 58 lines]
>
> Tristan
relative_virtue@hotmail.com - 18 Jan 2007 10:22 GMT
Nick,

LastRow returns 110 in the case of ActiveSheet.  This is as it should
be.  Still no change to the PageSetup properties, however.

Tristan

> Your code certainly effects the page layout, but without know the value of
> LastRow, hard to say what should happen.
> Add a "Debug.Print LastRow" to see if it the expected value.
>
> NickHK
relative_virtue@hotmail.com - 18 Jan 2007 10:27 GMT
In fact, by way of proof that it has no effect, here is a Debug.Print
of ActiveSheet.PageSetup.PrintArea before and after this line

     .PrintArea = "A1:I" & LastRow + 4

is executed:

BEFORE

?ActiveSheet.PageSetup.PrintArea
$A$1:$AF$114

AFTER

?ActiveSheet.PageSetup.PrintArea
$A$1:$AF$114

Tristan
JE McGimpsey - 18 Jan 2007 10:41 GMT
What happens when you set a breakpoint in Workbook_BeforePrint and step
through the code?

> Guys,
>
[quoted text clipped - 58 lines]
>
> Tristan
relative_virtue@hotmail.com - 18 Jan 2007 10:57 GMT
> What happens when you set a breakpoint in Workbook_BeforePrint and step
> through the code?

It steps through fine.  VBA doesn't throw up any errors, it all seems
to execute without a hitch - it's just that the properties don't seem
to be in the least bit affected by the code.

One thing to mention is that this did work okay once upon a time - the
current PageSetup properties were initially set by this code.  But now
they won't change, so if I alter, say, Orientation to xlPortrait, it
still comes out as landscape.  The main aim of this code is to change
the PrintArea depending on whether it is just being Printed or Print
Previewed normally or whether it has been called through the
TogglePrint routine, but I can't change it at all.

I've also tried using ThisWorkbook.Names to delete and then add a
"Print_Area" name with the appropriate string value.  But though it
deleted the Name and didn't throw up an error at the .Names.Add line,
no new Name appeared.

Very peculiar.

Tristan
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.