В тупик из-за ошибки времени выполнения "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