If you leave off the property you want, then excel will (always???) use .value.
So .Cells(LowerPrintArea, LastCol) would refer to the value in that cell. If it
looked like an address, it would work -- but probably not the way you want!
But try specifying .address as the property you want:
..PageSetup.PrintArea = "$A$1:" & .Cells(LowerPrintArea, LastCol).Address
or use a range and let excel do the work for you:
..PageSetup.PrintArea = .range("A1", .Cells(LowerPrintArea, LastCol)).Address