Я пытаюсь выполнить автоматическое форматирование Excel Workbook.Я получил код, где он успешно обрабатывает все книги в каталоге.Теперь я добавляю пользовательскую форму, которая позволяет пользователям выбирать, какие параметры форматирования они хотели бы.Одним из таких примеров является ориентация страницы.В пользовательской форме есть возможность выбрать альбомную или портретную ориентацию.Когда опция выбрана, переменная PUBLIC обновляется.
Private Sub OptionButton2_Click()
OPTOrientation = "xlLandscape"
End Sub
Я обновляю несколько свойств Page Setup, поэтому использую With.ActiveSheet.PageSetup, а затем перечисляю их.Когда я пытаюсь присвоить OPTOrientation свойству Page Setup .Orientation следующим образом:
.Orientation = OPTOrientation
Однако это приводит к следующей ошибке: Невозможно установить свойство Orientation класса PageSetup.Когда я вручную набираю «xlPortrait» вместо ссылки на переменную «OPTOrientation», код работает.Разрешено ли мне присваивать значения свойству класса с помощью публичной переменной?Мой тип данных неверен?
Суть в том, что свойство [.PrintHeadings] объекта PageSetup является логическим значением, и я могу назначить для этого свойства переменную для задачи.Что я и сделал в приведенном ниже примере.
Вот макрос:
Public OPTOrientation As String
Sub LetterLandscape() '' Macro Name
Dim Headings As Boolean
Headings = False
Sheets.Select
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&A"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = "Page &P of &N"
.RightFooter = ""
.PrintHeadings = Headings
.PrintGridlines = True
.Orientation = OPTOrientation
.papersize = xlPaperLetter
.Order = xlOverThenDown
.FitToPagesWide = 1
.FitToPagesTall = False
.ScaleWithDocHeaderFooter = False
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.7)
.TopMargin = Application.InchesToPoints(0.75)
.BottomMargin = Application.InchesToPoints(0.75)
.HeaderMargin = Application.InchesToPoints(0.3)
.FooterMargin = Application.InchesToPoints(0.3)
End With
Application.PrintCommunication = True
End Sub