В тупик из-за ошибки времени выполнения "1004": невозможно установить свойство PrintTitleRows класса PageSetup

Я создаю подпрограмму для настройки страницы листа. Появляется сообщение об ошибке для.PrintTitleRows = Match. Подпрограмма отлично работает, если я уберу эту строку. Я изучил эту ошибку в службе поддержки Microsoft, в ней говорится: "Эта проблема возникает, когда на вашем компьютере не установлены драйверы принтера. Excel не может установить или получить свойства настройки страницы, если драйверы принтера не установлены".

Интересно, что на странице перечислены другие свойства в.PageSetup класс, в том числе .CenterHeader, .PrintQuality, .Orientation, и множество других свойств, которые есть в моем коде. Было бы лучше, если бы эта ошибка возникала для каждого свойства, соответствующего типу ошибки, но только.PrintTitleRows Является ли.

Вот мой код:

Sub PageSetup_General2()
Dim WS As Worksheet
Dim Match As Range

Set WS = ActiveWorkbook.ActiveSheet
Application.PrintCommunication = True

Set Match = WS.Cells.Find(What:="Source #", LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
        'Find Range for .PrintTitleRows
        
With WS.PageSetup
        .CenterHeader = "&F"
        .LeftFooter = "Prepared by " & Application.UserName
        'Sets username, to check what your username is, go to File>Options>General
        .CenterFooter = "&D"
        .RightFooter = "Page &P"
        .LeftMargin = Application.InchesToPoints(0.25)
        .RightMargin = Application.InchesToPoints(0.25)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        'Sets arrow margins
        .PrintQuality = 600
        .Orientation = xlLandscape
        'Sets Landscape
        .PaperSize = xlPaperLetter
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .PrintTitleRows = Match
        'Yields error: "Run-time error '1004': "Unable to set the PrintTitleRows property of the PageSetup class"
End With
End Sub

Я возился с Application.PrintCommunication и дважды проверяю, что драйверы моего принтера установлены, но безрезультатно... Есть мысли о том, что происходит с этим субподрядчиком?

1 ответ

Решение

Хотя это разрешено в комментариях, ответ лучше всего так;

В PrintTitleRowsсвойство, согласно документации MS:

Возвращает или задает строки, содержащие ячейки, которые должны повторяться вверху каждой страницы, в виде строки в нотации стиля A1 на языке макроса. Чтение / запись строки.

Таким образом, чтобы получить обозначение в стиле A1, используйте Range.Address недвижимость - в вашем случае, Match.Address. Допустим, ваш диапазон представляет собой ячейкиA5 к D5, который вернет Match.Address в качестве $A$5:$D$5

Вы можете ссылаться на документацию по свойству.Address здесь.

Если вы хотите вернуть адрес без $абсолютная ссылка, установите для параметров rowAbsolute и columnAbsolute значениеFalse, т.е. .Address False, False который вернется A5:D5

Другие вопросы по тегам