Print selective pages - only if the pages's Rows.Hidden = False"

M

Marie J-son

Hi there,
I have a sheet with 25 pages, where the ranges of the pages are named
ranges. I have a different number of pages to print out, from only 3 to all
25. I find that the solution should become like:

Sheet1.PageSetup.PrintArea = Sheet1.Range(Union(rng1, rng2, rng3,
....)).Address

But how to come there? In words:
Identify the pages with "Rows.hidden = False". If True, the name of the page
should be added to an array.
After looping through the sheet, there is a array to add into the Union
formula

Am I right? If yes - how do I do this in vba? My weakest point in VBA is
Arrays, and I can't figure out how to compare/match with the named ranges of
the pages.

Maybe you got an other solution on the shelf with an other approach?

Please, help me

/Regards
 
T

Tom Ogilvy

You can build your union progressively

for i = 1 to 10
bPrint = true
for each cell in Thisworkbook.Names(i).ReferestoRange
if cell.EntireRow.Hidden = True then
bPrint = False
exit for
end if
Next
if bPrint then
set rng1 = Thisworkbook.Names(i).ReferstoRange
if rng is nothing then
set rng = rng1
else
set rng = union(rng, rng1)
end if
end if
Next
if not rng is nothing then
Activesheet.PageSetup.PrintArea = rng.Address
End if
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Array code only works on selected sheet 14
Union Method 2
Excel VBA help: Text file formatting 19
Page Breaks in VBA Q 6
Variable range union 1
Suppress 'Printing page' popup 4
Temporary Footer? 1
Loop and name 3

Top