Использование переменной STRING для заполнения свойства настройки страницы в Excel VBA - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь выполнить автоматическое форматирование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...