I am developing a complex spreadsheet for a friend; my first in-depth Excel. Working in Excel 2003. The issue I am having is workin with xl constants , eg xlPaper. The issue comes when trying to work with the constant, it is like the value is not able to be worked with when passed the reference "xlWhatever".
Code with issue:
Dim myRange As String, LM As Integer, RM As Integer, TM As Integer, BM As Integer, Papersizing As String, Orient As String, Quality As Integer On Error GoTo Errorcatch TM = ws.Range("f2").Value LM = ws.Range("f3").Value BM = ws.Range("f4").Value RM = ws.Range("f5").Value Papersizing = "xlPaper" & ws.Range("d2").Value Orient = "xl" & ws.Range("d5").Value MsgBox Papersizing Quality = ws.Range("d9").Value With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With With ActiveSheet.PageSetup MsgBox .Papersize .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.CentimetersToPoints(LM) .RightMargin = Application.CentimetersToPoints(RM) .TopMargin = Application.CentimetersToPoints(TM) .BottomMargin = Application.CentimetersToPoints(BM) .HeaderMargin = Application.CentimetersToPoints(0) .FooterMargin = Application.CentimetersToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = Orient .Draft = False .Papersize = Papersizing .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 .PrintErrors = xlPrintErrorsDisplayed End With
So Papersizing there ends up being "xlPaperA4", Orient = "xlPortrait".
The error Excel spits out is "Unable to set the PaperSize property of the PageSetup class" when dealing with the pagesize, and similar with the orientation.
Yet if I pass hard values like .Papersize = 9 it works. Not particularly dynamic. Forgive me…I'm used to PHP.
So what do I do here? is there some method to re-reference constants based upon the name of the constant?