Отображение предварительного просмотра для текущей страницы (Microsoft Excel)
У Мишель есть длинный рабочий лист, с которым она работает. Когда она использует предварительный просмотр для рабочего листа, страница, отображаемая в диалоговом окне предварительного просмотра, всегда является первой страницей. Мишель задается вопросом, есть ли способ сделать так, чтобы предварительный просмотр печати автоматически отображал страницу рабочего листа, над которым она работает.
Один из способов решения этой проблемы — попробовать работать с областями печати. Если вы выберете область рабочего листа, над которой работаете, а затем установите область печати, равную вашему выбору, то при отображении предварительного просмотра печати вы должны увидеть только эту область печати.
Если это не соответствует вашему желанию, вы можете подумать, что можете прибегнуть к использованию макроса. Вот пример макроса, который может помочь вам:
Sub PrintPreviewActivePage() Dim lActiveRow As Long Dim iActiveCol As Integer Dim iHPBs As Integer Dim iVPBs As Integer Dim lRow As Integer Dim iCol As Integer Dim iPage As Integer lActiveRow = ActiveCell.Row iActiveCol = ActiveCell.Column ActiveSheet.UsedRange If IsEmpty(ActiveCell.SpecialCells(xlCellTypeLastCell)) Then _ ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " " If lActiveRow > ActiveCell.SpecialCells(xlCellTypeLastCell).Row Or _ iActiveCol > ActiveCell.SpecialCells(xlCellTypeLastCell).Column Then _ Exit Sub With ActiveSheet iHPBs = .HPageBreaks.Count iVPBs = .VPageBreaks.Count lRow = 0 iCol = 0 If iHPBs > 0 Or iVPBs > 0 Then For lRow = iHPBs To 1 Step -1 If .HPageBreaks(lRow).Location.Row <= lActiveRow Then Exit For Next lRow For iCol = iVPBs To 1 Step -1 If .VPageBreaks(iCol).Location.Column <= iActiveCol Then Exit For Next iCol End If iPage = (lRow + 1) + (iCol * (iHPBs + 1)) .PrintOut From:=iPage, To:=iPage, Preview:=True MsgBox "Previewed page " & iPage End With If ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " " Then _ Selection.SpecialCells(xlCellTypeLastCell).ClearContents End Sub
Этот макрос на самом деле является вариацией любого количества макросов, которые вы можете найти в Интернете. Он состоит из двух ключевых частей: сначала макрос определяет, на какой «странице» вы находитесь на листе, а затем он использует метод .PrintOut с параметром Preview, установленным в True, что приводит к вызову Print Preview.
На некоторых рабочих листах этот макрос может отлично работать, но довольно непостоянно, будет он работать или нет. В большинстве случаев мне не удавалось заставить его работать, если только я не использовал очень маленькие рабочие листы. (Другими словами, очень мало строк и столбцов.) Если вы запустите его на большом листе, вы быстро увидите, что в цикле, проверяющем элементы коллекции .HPageBreaks, вы получите ошибку «Индекс вне диапазона». Как это могло произойти, если вы не используете член, который находится вне диапазона (lRow никогда не выходит за пределы значения, возвращаемого свойством .Count), вызывает недоумение.
Однако, похоже, это проблема, которую Microsoft признает. Фактически, это проблема, которую они признали, но никогда не исправляли в течение многих лет:
https://support.microsoft.com/en-us/help/210663/
Однако предлагаемое решение на веб-странице на самом деле не работает. Итак, мы застряли с макросом, который надежно работает только на листах, где вам не нужно вычислять номер страницы, потому что вы работаете только с одной страницей. Ах!
Суть в том, что в обозримом будущем подход, основанный на макросах, может оказаться непригодным для нужд Мишель. Остается только подход области печати, описанный в начале этого совета.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13578) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.