You may be able to use a defined name if you can come up with a formula that
returns the addresses that you want to use.
My test sheet is named Sheet1.
I want to print columns A:B if A1=1. If A1<>1, then print columns C
.
This is what I did:
Insert|Name|define (xl2003 menus)
Names in workbook: Sheet1!Print_Area
Refers to: =IF(Sheet1!$A$1=1,Sheet1!$A:$B,Sheet1!$C:$D)
(You may have to surround your sheet name with apostrophes:
'Sheet 99'!Print_Area
and
=IF('Sheet 99'!$A$1=1,'Sheet 99'!$A:$B,'Sheet 99'!$C:$D)
If you go into file|page setup, you may find that the print range is changed to
a specific range. And you'll have to reapply the Print_Area name.