Vba excel activesheet pagesetup

Параметры печатной страницы в VBA Excel. Свойство PageSetup объекта Worksheet. Объект PageSetup и описание некоторых его свойств с примерами.

PageSetup — это объект, который содержит все атрибуты параметров страницы в виде свойств (диапазон печати, размеры полей, ориентация страницы и т.д.).

Объект PageSetup возвращается свойством PageSetup объекта Worksheet:

где Expression — это выражение (переменная), возвращающее объект Worksheet.

Свойства объекта PageSetup

Диапазон печати

Установить диапазон для печати из кода VBA Excel можно с помощью свойства PageSetup.PrintArea:

Worksheets(«Лист1»).PageSetup.PrintArea = «D7:L30»

Лист1.PageSetup.PrintArea = Selection.Address

Размеры полей

Свойства, отвечающие за размер полей печатной страницы:

Свойство Описание
LeftMargin Возвращает или задает размер левого поля
TopMargin Возвращает или задает размер верхнего поля
RightMargin Возвращает или задает размер правого поля
BottomMargin Возвращает или задает размер нижнего поля

Свойства, отвечающие за размер полей, предназначены для чтения и записи, выражаются в точках (1 точка равна 1/72 дюйма или ≈1/28 см). Тип данных — Double.

Для того, чтобы вручную не высчитывать количество точек в дюймах или сантиметрах, существуют методы Application.InchesToPoints и Application.CentimetersToPoints, которые автоматически переводят дюймы и сантиметры в точки.

Пример задания размеров полей для печатной страницы:

Sub Primer1()

    With Лист4.PageSetup

        .LeftMargin = 72  ‘1 дюйм (2,54 см)

        .TopMargin = Application.CentimetersToPoints(2)  ‘2 см

        .RightMargin = 28  ‘приблизительно 1 см

        .BottomMargin = Application.InchesToPoints(0.5)  ‘0,5 дюйма (1,27 см)

    End With

End Sub

Пример чтения размеров заданных полей для печатной страницы и запись их в ячейки диапазона [A1:A4] активного листа:

Sub Primer2()

    With Лист4.PageSetup

        [A1] = .LeftMargin

        [A2] = .TopMargin

        [A3] = .RightMargin

        [A4] = .BottomMargin

    End With

End Sub

Масштаб

Масштабирование рабочего листа для печати осуществляется в VBA Excel с помощью свойства PageSetup.Zoom:

Лист4.PageSetup.Zoom = 200  ‘Увеличение масштаба до 200% (от 100%)

Worksheets(«Лист4»).PageSetup.Zoom = 80  ‘Уменьшение масштаба до 80% (от 100%)

Свойство PageSetup.Zoom может задавать или возвращать значение от 10 до 400 процентов.

Ориентация страницы

За ориентацию печатной страницы отвечает свойство PageSetup.Orientation, которое возвращает или задает значение константы из коллекции XlPageOrientation.

Константы коллекции XlPageOrientation:

Константа Значение Описание
xlPortrait 1 Портретный режим (вертикальная ориентация)
xlLandscape 2 Ландшафтный режим (горизонтальная ориентация)

Примеры установки ориентации печатной страницы из кода VBA Excel:

Worksheets(«Лист4»).PageSetup.Orientation = xlPortrait

ActiveSheet.PageSetup.Orientation = xlLandscape


Содержание

  1. VBA Excel. Объект PageSetup (параметры страницы)
  2. Описание объекта PageSetup
  3. Свойства объекта PageSetup
  4. Диапазон печати
  5. Размеры полей
  6. Русские Блоги
  7. [Excel VBA] Параметры печати объекта PageSetup
  8. 1. Свойства, соответствующие вкладке «Страница»
  9. 2. Свойства, соответствующие вкладке «Поля».
  10. 3. Свойства, соответствующие вкладке «Верхний / нижний колонтитул».
  11. 4. Свойства, соответствующие вкладке «Рабочий лист»
  12. 5. Атрибуты, не соответствующие вкладкам
  13. Range.PrintOut метод

VBA Excel. Объект PageSetup (параметры страницы)

Параметры печатной страницы в VBA Excel. Свойство PageSetup объекта Worksheet. Объект PageSetup и описание некоторых его свойств с примерами.

Описание объекта PageSetup

Объект PageSetup возвращается свойством PageSetup объекта Worksheet:

где Expression — это выражение (переменная), возвращающее объект Worksheet.

Свойства объекта PageSetup

Диапазон печати

Установить диапазон для печати из кода VBA Excel можно с помощью свойства PageSetup.PrintArea:

Размеры полей

Свойства, отвечающие за размер полей печатной страницы:

Свойство Описание
LeftMargin Возвращает или задает размер левого поля
TopMargin Возвращает или задает размер верхнего поля
RightMargin Возвращает или задает размер правого поля
BottomMargin Возвращает или задает размер нижнего поля

Свойства, отвечающие за размер полей, предназначены для чтения и записи, выражаются в точках (1 точка равна 1/72 дюйма или ≈1/28 см). Тип данных — Double.

Для того, чтобы вручную не высчитывать количество точек в дюймах или сантиметрах, существуют методы Application.InchesToPoints и Application.CentimetersToPoints, которые автоматически переводят дюймы и сантиметры в точки.

Пример задания размеров полей для печатной страницы:

Источник

Русские Блоги

[Excel VBA] Параметры печати объекта PageSetup

Мы часто печатаем вещи в своей работе и вручную устанавливаем некоторые параметры, например, горизонтальную или вертикальную печать. Разберитесь в свойствах PageSetup, задайте параметры печати с помощью нескольких коротких строк кода, затем вы можете установить их один раз, использовать постоянно, удобно и эффективно.

Объект PageSetup представляет инструкции по настройке страницы. Содержит все свойства настроек страницы (левое поле, нижнее поле, размер бумаги и т. Д.).

В следующем примере устанавливается альбомная ориентация печати, а затем выполняется печать рабочего листа.

1. Свойства, соответствующие вкладке «Страница»

Атрибуты Описание
FirstPageNumber Вернуть или установить номер первой страницы при печати указанного рабочего листа. Если установлено значение xlAutomatic, Microsoft Excel использует номер первой страницы. Значение по умолчанию — xlAutomatic. Длинный шрифт, читаемый и записываемый.
FitToPagesTall Верните или установите высоту страницы, используемую для масштабирования листа при его печати. Применяется только к рабочим листам. Тип варианта, читаемый и записываемый.
FitToPagesWide Верните или установите ширину страницы, используемую для масштабирования рабочего листа при его печати. Применяется только к рабочим листам. Тип варианта, читаемый и записываемый.
Orientation Возвращает или задает значение XlPageOrientation, которое представляет портретный или альбомный режим печати.
Pages Возвращает или задает количество страниц в коллекции Pages.
PaperSize Верните или установите размер бумаги. Может читать и писать XlPaperSize.
PrintQuality Вернуть или установить качество печати. Тип варианта, читаемый и записываемый.
Zoom Возвращает или задает значение Variant, которое представляет собой процентное значение от 10% до 400%. Этот процент представляет собой коэффициент масштабирования, когда Microsoft Excel печатает рабочий лист. Это свойство применяется только к листам. Если для этого атрибута установлено значениеFalse, ЗатемFitToPagesWide с участием FitToPagesTallАтрибуты определяют способ масштабирования листа. При любом увеличении сохраняется соотношение сторон исходного документа.

В этом примере Sheet1 настраивается для печати в альбомной ориентации.

2. Свойства, соответствующие вкладке «Поля».

Установление и возврат маржи в пунктах. быть полезнымInchesToPoints Метод преобразования дюймов в фунты, вы также можете использоватьCentimetersToPoints Метод перевода сантиметров в точки.

Точка: относится к единице измерения высоты печатаемых символов. Фунт равен 1/72 дюйма или примерно равен 1/28 сантиметра. )

Атрибуты Описание
BottomMargin Возвращает или задает размер нижнего поля в пунктах. Двойной тип, читаемый и записываемый.
CenterHorizontally Если указанный рабочий лист напечатан в центре страницы по горизонтали, значение атрибута равно True. Логический тип, доступный для чтения и записи.
CenterVertically Если указанный рабочий лист напечатан в центре страницы по вертикали, значение атрибута равно True. Логический тип, доступный для чтения и записи.
FooterMargin Вернуть или установить расстояние от нижнего колонтитула до низа страницы в пунктах. Двойной тип, читаемый и записываемый.
HeaderMargin Вернуть или установить расстояние от верха страницы до верхнего колонтитула в пунктах. Двойной тип, читаемый и записываемый.
LeftMargin Возвращает или задает размер левого поля в пунктах. Двойной тип, читаемый и записываемый.
RightMargin Возвращает или задает размер правого поля в пунктах. Двойной тип, читаемый и записываемый.
TopMargin Возвращает или задает размер верхнего поля в пунктах. Двойной тип, читаемый и записываемый.

В следующем примере устанавливаются все поля первого листа.

Эти два свойства аналогичны настройке содержимого ячейки по центру по горизонтали и вертикали.

3. Свойства, соответствующие вкладке «Верхний / нижний колонтитул».

Атрибуты Описание
AlignMarginsHeaderFooter Если Excel выравнивает верхний и нижний колонтитулы с полями, заданными в параметрах настройки страницы, он возвращает True. Чтение / запись логического типа.
CenterFooter Отцентрируйте информацию нижнего колонтитула в объекте PageSetup. Чтение / запись типа String.
CenterFooterPicture Возвращает графический объект, который представляет изображение в средней части нижнего колонтитула. Используется для установки атрибутов, связанных с изображением.
CenterHeader Выровняйте информацию заголовка по центру объекта PageSetup. Чтение / запись типа String.
CenterHeaderPicture Возвращает графический объект, который представляет изображение в средней части заголовка. Используется для установки атрибутов, связанных с изображением.
DifferentFirstPageHeaderFooter Истинно, если на первой странице используется другой верхний или нижний колонтитул. Чтение / запись логического типа.
LeftFooter Возвращает или задает выравнивание текста в левом нижнем колонтитуле книги или раздела.
LeftFooterPicture Возвращает графический объект, который представляет изображение в левой части нижнего колонтитула. Используется для установки атрибутов, связанных с изображением.
LeftHeader Возвращает или задает выравнивание текста в левом заголовке книги или раздела.
LeftHeaderPicture Возвращает графический объект, который представляет изображение в левой части заголовка. Используется для установки атрибутов, связанных с изображением.
OddAndEvenPagesHeaderFooter Если нечетные и четные страницы указанного объекта PageSetup имеют разные верхние и нижние колонтитулы, значение этого атрибута равно True. Логический тип, доступный для чтения и записи.
RightFooter Возвращает или задает расстояние (в пунктах) между правым краем страницы и правым краем нижнего колонтитула. Чтение / запись типа String.
RightFooterPicture Возвращает графический объект, который представляет изображение в правой части нижнего колонтитула. Используется для установки атрибутов изображения.
RightHeader Вернуть или установить правую часть заголовка. Чтение / запись типа String.
RightHeaderPicture Укажите графическое изображение, которое должно отображаться в правом заголовке. Только чтение.
ScaleWithDocHeaderFooter Возвращает или задает, будут ли масштабироваться верхний и нижний колонтитулы вместе с документом при изменении размера документа. Чтение / запись логического типа.

4. Свойства, соответствующие вкладке «Рабочий лист»

Атрибуты Описание
BlackAndWhite Если элементы в указанном документе напечатаны черно-белыми, значение атрибута равно True. Логический тип, доступный для чтения и записи.
Draft Если графика на листе не печатается при печати, значение атрибута равно True. Логический тип, доступный для чтения и записи.
Order Возвращает или задает значение XlOrder, которое представляет порядок, который Microsoft Excel использует для нумерации страниц при печати большого рабочего листа.
PrintArea Верните или установите область для печати в виде строки, которая использует ссылку стиля A1 макроязыка. Тип строки, доступный для чтения и записи.
PrintComments Вернуть или установить способ печати комментариев на листе. Тип XlPrintLocation, доступный для чтения и записи. Вы можете распечатать комментарии в виде текстовых полей или концевых сносок.
PrintErrors Устанавливает или возвращает константу XlPrintErrors, которая указывает тип отображаемой ошибки печати. Эта функция позволяет пользователям отменять отображение ошибок при печати рабочего листа. Могу читать и писать.
PrintGridlines Если линии сетки ячеек напечатаны на странице, значение равно True. Применяется только к рабочим листам. Логический тип, доступный для чтения и записи.
PrintHeadings Если заголовки строк и столбцов печатаются одновременно при печати этой страницы, значение равно True. Применяется только к рабочим листам. Логический тип, доступный для чтения и записи.
PrintNotes Если при печати рабочего листа комментарии к ячейкам печатаются вместе как концевые сноски, значение равно True. Применяется только к рабочим листам. Логический тип, доступный для чтения и записи.
PrintTitleColumns Возвращает или задает столбец, содержащий ячейки, которые повторно появляются в левой части каждой страницы, выраженные строкой на языке макросов в стиле A1. Тип строки, доступный для чтения и записи. Установите для этого атрибута значениеFalseИли пустая строка («»), строка заголовка будет закрыта.
PrintTitleRows Возвращает или задает те строки, которые содержат ячейки, которые многократно появляются в верхней части каждой страницы, выраженные в нотации стиля A1 с помощью строк макроязыка. Тип строки, доступный для чтения и записи.

Комментарий будет напечатан на новой странице.

5. Атрибуты, не соответствующие вкладкам

Атрибуты Описание
Application Если идентификатор объекта не используется, это свойство возвращает объект Application, представляющий приложение Microsoft Excel. Если используется идентификатор объекта, это свойство возвращает объект Application, представляющий создателя указанного объекта (вы можете использовать это свойство в объекте автоматизации OLE, чтобы вернуть приложение объекта). Только чтение.
Creator Возвращает 32-битное целое число, указывающее приложение, создавшее объект. Только чтение Длинный тип.
EvenPage Возвращает или задает выравнивание текста на четных страницах книги или раздела.
FirstPage Возвращает или задает выравнивание текста на первой странице книги или раздела.
Parent Возвращает родительский объект указанного объекта. Только чтение.

Range.PrintOut метод

Этот метод эквивалентен нажатию кнопки печати в Excel для выполнения операции печати. Этот метод позволяет указать принтер для печати.

Выражение выглядит следующим образом.

.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName)

название Описание
From Номер начальной страницы для печати. Если этот параметр не указан, печать начнется с начальной позиции.
To Номер конечной страницы печати. Если этот параметр не указан, печать будет до последней страницы.
Copies Количество копий для печати. Если этот параметр не указан, будет напечатана только одна копия.
Preview Если этоTrue, Microsoft Excel вызовет предварительный просмотр перед печатью объекта. Если этоFalse(Или опустите этот параметр), объект будет немедленно напечатан.
ActivePrinter Задайте имя активного принтера.
PrintToFile Если этоTrue, Затем распечатайте в файл. Если не указаноPrToFileName, Microsoft Excel предложит пользователю ввести имя файла вывода, который будет использоваться.
Collate Если этоTrue, Печать нескольких копий с подборкой.
PrToFileName в случае PrintToFileУстановить какTrue, Параметр указывает имя файла для печати.

Заметка:From с участием ToОписанная «страница» относится к странице, которая будет напечатана, а не ко всем страницам в указанном листе или книге.

Публичный аккаунт WeChat: VBA168

Обратите внимание на общедоступную учетную запись WeChat и каждый день получайте объяснения классических примеров Excel VBA.

Магазины Taobao предоставляют услуги настройки Excel.

Источник

title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

PageSetup object (Excel)

vbaxl10.chm472072

vbaxl10.chm472072

excel

Excel.PageSetup

2fd22df9-5987-f723-04a9-9a3f2e84ac81

03/30/2019

high

PageSetup object (Excel)

Represents the page setup description.

Remarks

The PageSetup object contains all page setup attributes (left margin, bottom margin, paper size, and so on) as properties.

Example

Use the PageSetup property of the Worksheet object to return a PageSetup object.

The following example sets the orientation to landscape mode and then prints the worksheet.

With Worksheets("Sheet1") 
 .PageSetup.Orientation = xlLandscape 
 .PrintOut 
End With

The With statement makes it easier and faster to set several properties at the same time. The following example sets all the margins for worksheet one.

With Worksheets(1).PageSetup 
 .LeftMargin = Application.InchesToPoints(0.5) 
 .RightMargin = Application.InchesToPoints(0.75) 
 .TopMargin = Application.InchesToPoints(1.5) 
 .BottomMargin = Application.InchesToPoints(1) 
 .HeaderMargin = Application.InchesToPoints(0.5) 
 .FooterMargin = Application.InchesToPoints(0.5) 
End With

Properties

  • AlignMarginsHeaderFooter
  • Application
  • BlackAndWhite
  • BottomMargin
  • CenterFooter
  • CenterFooterPicture
  • CenterHeader
  • CenterHeaderPicture
  • CenterHorizontally
  • CenterVertically
  • Creator
  • DifferentFirstPageHeaderFooter
  • Draft
  • EvenPage
  • FirstPage
  • FirstPageNumber
  • FitToPagesTall
  • FitToPagesWide
  • FooterMargin
  • HeaderMargin
  • LeftFooter
  • LeftFooterPicture
  • LeftHeader
  • LeftHeaderPicture
  • LeftMargin
  • OddAndEvenPagesHeaderFooter
  • Order
  • Orientation
  • Pages
  • PaperSize
  • Parent
  • PrintArea
  • PrintComments
  • PrintErrors
  • PrintGridlines
  • PrintHeadings
  • PrintNotes
  • PrintQuality
  • PrintTitleColumns
  • PrintTitleRows
  • RightFooter
  • RightFooterPicture
  • RightHeader
  • RightHeaderPicture
  • RightMargin
  • ScaleWithDocHeaderFooter
  • TopMargin
  • Zoom

See also

  • Excel Object Model Reference

[!includeSupport and feedback]

Экономисты в повседневной работе сталкиваются с рутинной работой: с определенной периодичностью им приходится выполнять одну и ту же последовательность действий для получения определенного отчета, например. Частично автоматизировать такую работу можно с помощью макросов. Причем для написания несложных команд достаточно знать только азы программирования.

Как записать самый простой макрос?

Для начала запишем самый легкий макрос — зададим в ячейке А1 формат вида 12 345:

  •  Открываем новую книгу, в ячейке А1 набираем шестизначное число 123456. Сейчас оно выдается без разделителей разрядов. Запишем макрос, который ставит эти разделители.
  •  Заходим на панели инструментов в закладку Вид*, находим кнопку Макросы, жмем Запись макроса. В появившемся окне задаем имя макроса и книгу, в которой хотим этот макрос сохранить.

Важно

Запустить макросы можно только из открытых книг, поэтому если вы планируете использовать записанные вами макросы довольно часто, стоит использовать специальную книгу макросов, которая автоматически открывается вместе с запуском сеанса Excel.

Если вы все-таки хотите хранить макросы в отдельном файле, эту книгу нужно сохранить, выбрав тип файла Книга Excel с поддержкой макросов. В противном случае после закрытия книги макросы будут стерты.

  •  Выбираем Сохранить в… —  Личная книга макросов и нажимаем Ок (рис. 1).

Рис. 1. Запись макроса в личную книгу макросов

  •  Записываем в макрос действия, которые хотим выполнить: вызываем контекстное меню Формат ячеек (можно воспользоваться комбинацией клавиш Сtrl+1) и задаем нужный нам формат числа: на закладке Число идем в блок (все форматы) и выбираем там формат вида # ##0.

К сведению

Этот формат можно задать и в блоке Числовой, но чуть позже вам станет ясно, почему мы воспользовались блоком Все форматы.

  •  На закладке Вид — Макросы выбираем пункт Остановить запись.

Второй, более быстрый способ остановить запись макроса — нажать на появившийся в левом нижнем углу синий квадратик (рис. 2.).

Мы рекомендуем

Всегда обращайте внимание на этот квадратик: если он появился на панели, значит, сейчас идет запись всех ваших действий в макрос. Не забывайте вовремя останавливать запись макроса, чтобы потом его не пришлось переделывать.

Проверяем, что макрос записан и работоспособен:

  •  в ячейку А2 вбиваем любое шестизначное число;
  •  запускаем макрос одним из двух способов: на закладке Вид — Макросы выбираем пункт Макросы или нажимаем комбинацию клавиш Alt+F8, находим в списке наш макрос и нажимаем кнопку Выполнить.

Рис. 2. Форматирование числа и остановка записи макроса

Итак, вы записали свой первый макрос! Примите поздравления. Теперь давайте познакомимся с личной книгой макросов и синтаксисом написания команд для макроса.

Личная книга макросов

По умолчанию Excel не отображает личную книгу макросов. Чтобы убедиться, что она открыта, выбираем на вкладке Вид кнопку Отобразить — в появившемся окне должна быть книга под именем PERSONAL.

Мы убедились, что книга открыта, но отображать ее не будем, чтобы потом по ошибке не закрыть ее. По сути, в этой книге нас интересует так называемый Исходный текст — блок, в котором записываются макросы. Чтобы увидеть это окно, нажмите клавиши Alt+F11 или кликните правой кнопкой мыши на ярлыке любого листа Excel и выберите в контекстном меню Исходный текст. Откроется окно VBA-кодирования в Excel (рис. 3). Оно состоит из двух блоков:

1. В левой части экрана окно Project – VBAProject — это проводник, в котором отображаются все открытые в данный момент книги Excel (даже если вы их не видите, как, например, книгу Personal). Работа с этим блоком аналогична работе в обычном проводнике — двойной клик по наименованию книги раскрывает ее содержимое. Нас интересует блок Modules — Module1. Кликаем левой кнопкой мыши дважды по этому объекту.

2. В правой части экрана откроется блок записи и редактирования макросов. Здесь уже автоматически записался Макрос1. Рассмотрим на его примере основную канву макроса.

Рис. 3. Окно VBA-кодирования в Excel

Синтаксис макроса

Макросы — это команды, написанные на языке VBA (Visual Basic for Applications). И синтаксис кода макроса не отличается от записи кода в Visual Basic.

Любой макрос имеет следующий вид:

Sub Имя_Макроса_Без_Пробелов()

‘ комментарии к макросу — они нужны для вас, VBA не воспринимает такие строки как команды

команды, написанные на языке VBA

End Sub

3 обязательных блока макроса:

1. Начало макроса. Всегда начинается с команды Sub. Далее идет имя макроса — оно может быть на русском языке, но не должно содержать пробелы и специальные символы.

В конце имени макроса всегда ставятся скобки () — они нужны, когда вы создаете свою функцию, в них указываются аргументы функции, но об этом сейчас речь не пойдет.

2. Блок команд. В нашем примере он состоит из одной строки: Selection.NumberFormat = «#,##0»

Каждая команда должна начинаться с новой строки. Если текст команды очень длинный и не помещается на экране, его можно разбить на несколько строк, заканчивая строку символом нижнего подчеркивания _ (далее в примере мы это увидим).

3. Конец макроса. Всегда обозначается как End Sub.

Есть и один необязательный блок — это комментарии, которые вы можете оставлять в любом месте внутри кода макроса, поставив перед началом комментариев знак апострофа ‘. Например, вы можете описать, что именно делает тот или иной макрос.

Обратите внимание!

Если вы хотите разместить комментарии в несколько строк, каждую новую строку надо начинать с апострофа.

Теперь запишем более сложный макрос и научимся понимать текст его кода.

Например, информационная система выдает отчет «Бюджет на месяц» без выделения групповых значений цветом или шрифтом.

Нам необходимо:

  •  выделить групповые строки полужирным шрифтом;
  •  отформатировать на печать — расположить отчет по центру листа, задать масштаб 75 %, вывести в колонтитулы название отчета (рис. 4).

Рис. 4. Изменения после написания макроса

Запишем алгоритм форматирования отчета в макрос.

Нажимаем кнопку записи макроса и выполняем следующие действия:

  •  Даем макросу имя Форматирование_БДР, в блоке описания записываем, что будет делать этот макрос (например, Выделяет жирным курсивом итоги, форматирует на печать). Жмем Ок.
  •  Выделяем столбцы А:С, ставим автофильтр — на закладке Данные находим кнопку Фильтр.
  •  По столбцу КОД задаем условие не содержит точку: Текстовые фильтры — Не содержит и в поле текста ставим символ точки без пробелов (рис. 5).

Рис. 5. Использование автофильтра по столбцу «КОД»

  •  Выделяем отфильтрованный диапазон и задаем ему полужирный шрифт.
  •  Снимаем автофильтр (повторное нажатие на закладке Данные кнопки Фильтр).
  •  Заходим в меню форматирования на печать (Кнопка Файл/Office — Печать — Предварительный просмотр — Параметры страницы) и задаем там три параметра:

1) на вкладке Страница задаем масштаб 75 %;

2) на вкладке Поля отмечаем пункт Горизонтально в блоке Центрировать на странице;

3) на вкладке Колонтитулы создаем верхний колонтитул с текстом Бюджет на январь.

  •  Выходим из параметров страницы.
  •  Заканчиваем запись макроса.
  •  Нажимаем Alt+F11 и смотрим, что получилось (см. рис. 4).

Код этого макроса уже гораздо длиннее и непонятнее, но легко читаем для знающих английский язык и азы программирования в VBA.

Правила написания команд в VBA

Любая команда макроса состоит из двух блоков, разделенных точкой:

Объект.Действие с объектом или свойство объекта

Объектами в Excel являются, например:

  •  книга: WorkBook, ActiveWorkbook;
  •  лист, листы: WorkSheet, ActiveSheet, Sheets;
  •  ячейка: Cells(1,1) — в скобках указываются номера строки (Row) и столбца (Column) ячейки на листе;
  •  диапазон ячеек (может быть и одна ячейка): Range(«А1:С5»), Range(«А1»);
  •  строки (Rows);
  •  столбцы (Columns);
  •  выделение (Selection) — выделенный в данный момент диапазон (это может быть как несколько смежных ячеек, так и смежные строки или столбцы).

Примеры действий с объектами:

  •  ActiveWorkbook.Save — сохранить рабочую книгу (та, которая была активна в момент вызова пользователем макроса);
  •  Sheets(«Лист3»).Name = «Отчет» — переименовать «Лист3» в «Отчет»;
  •  Sheets(«Отчет»).Activate — перейти на лист с названием «Отчет»;
  •  Range(«А1»).Copy — скопировать в буфер обмена данные из ячейки А1;
  •  Rows(«13:13»).Delete Shift:=xlUp — удалить строку 13 со сдвигом вверх.

Примеры свойств объектов:

  •  ActiveCell.FormulaR1C1 = «БДР» — в выделенной (активной) ячейке записан текст «БДР»;
  •  ActiveCell.Row < 65 — номер ряда активной ячейки меньше 65.

Помнить все названия объектов, команд и свойств для написания несложных макросов не обязательно. Вы всегда можете сначала записать ваши стандартные действия с отчетами в Excel, а потом отформатировать код макроса, убрав из него лишние действия или заменив некоторые заданные параметры (например, длину диапазона) на переменные (которые в дальнейшем макрос будет запрашивать у пользователя или рассчитывать самостоятельно).

Но об этом мы расскажем далее, а сейчас обратимся к коду нашего первого макроса, состоящего из одной строки:

Selection.NumberFormat = «#,##0»

Суть его в следующем: к объекту Выделенный диапазон (у нас одна ячейка, но это может быть и весь столбец/строка или диапазон смежных ячеек) применяется свойство Числовой формат вида # ##0 (если помните, именно этот формат мы выбрали в списке).

Код макроса Форматирование_БДР и расшифровка строк кода представлены в таблице.

 

Строка кода

Расшифровка

Sub Форматирование_БДР()

Начало макроса, имя макроса

Пустая строка комментариев (ставится автоматически при записи макроса)

‘ Форматирование_БДР Макрос

Автоматически добавленный комментарий при записи макроса — может быть удален без потери работоспособности макроса

‘ Выделяем жирным курсивом итоги, форматируем на печать

Автоматически добавленный комментарий при записи макроса из поля Описание

Пустая строка — не влияет на суть исполнения макроса, но их полезно добавлять для разделения блоков команд внутри кода

   Columns(«A:C»).Select

Выделить (Select) объект Столбцы (Columns) А:С

    Selection.AutoFilter

Применить автофильтр (AutoFilter) для выделенного диапазона (Selection)

    ActiveSheet.Range(«$A$1:$C$34″).AutoFilter Field:=1, Criteria1:=»<>*.*», _

Задать критерий отбора «не содержит точку»

        Operator:=xlAnd

Продолжение команды из предыдущей строки.

Обратите внимание: предыдущая строка закончилась символом нижнего подчеркивания _, значит, текст команды не уместился на одну строку и окончание команды перенесено на следующую

    Range(«A1:C34»).Select

Выделить (Select) объект Диапазон (Range) А1:С34.

Обратите внимание: какой бы длины ни был ваш следующий отчет, для которого вы будете применять этот макрос, выделится всегда только диапазон до 34 строки!

Как сделать этот диапазон любой длины — обсудим немного позже

    Selection.Font.Bold = True

Для выделенного диапазона (Объект Selection) установить свойство «полужирный шрифт» (Font.Bold = True). Если нужно отменить какое-то свойство, пишем False

    Selection.AutoFilter

Снять автофильтр (при записи макроса это было повторное нажатие кнопки Фильтр на закладке Данные)

    With ActiveSheet.PageSetup

Начало процедуры With (используется, если далее перечисляются свойства или действия с одним и тем же объектом для компактности записи кода).

Для объекта ActiveSheet (Текущий лист) применить следующие параметры свойства PageSetup (Параметры печати):

        .PrintTitleRows = «»

Печатать на каждой странице сквозные строки — пусто (то есть данное свойство не задано пользователем)

        .PrintTitleColumns = «»

Печатать на каждой странице сквозные столбцы — пусто

    End With

Окончание процедуры With

    ActiveSheet.PageSetup.PrintArea = «»

Заданная область печати — пусто (то есть пользователь не ограничил область печати, следовательно, на экран будет выведено все, что есть на листе)

    With ActiveSheet.PageSetup

Начало процедуры With

Для объекта Текущий лист применить следующие параметры печати (цветом выделены те, которые мы изменили по сравнению со стандартными):

        .LeftHeader = «»

Левый верхний колонтитул — пусто

        .CenterHeader = «Бюджет на январь»

Центральный верхний колонтитул — задан текст пользователем

        .RightHeader = «»

Правый верхний колонтитул — пусто

        .LeftFooter = «»

Левый нижний колонтитул — пусто

        .CenterFooter = «»

Центральный нижний колонтитул — пусто

        .RightFooter = «»

Правый нижний колонтитул — пусто

        .LeftMargin = Application.InchesToPoints(0.708661417322835)

Размеры левого поля

        .RightMargin = Application.InchesToPoints(0.708661417322835)

Размеры правого поля

        .TopMargin = Application.InchesToPoints(0.748031496062992)

Размеры верхнего поля

        .BottomMargin = Application.InchesToPoints(0.748031496062992)

Размеры нижнего поля

        .HeaderMargin = Application.InchesToPoints(0.31496062992126)

Размеры верхнего колонтитула

        .FooterMargin = Application.InchesToPoints(0.31496062992126)

Размеры нижнего колонтитула

        .PrintHeadings = False

Не печатать заголовки строк и столбцов (False — пользователь не отметил этот пункт)

        .PrintGridlines = False

Не печатать сетку

        .PrintComments = xlPrintNoComments

Не печатать примечания

        .PrintQuality = 600

Качество печати — 600 точек на дюйм

        .CenterHorizontally = True

Центрировать на странице горизонтально (True — пользователь отметил этот пункт)

        .CenterVertically = False

Не центрировать по вертикали

        .Orientation = xlPortrait

Ориентация страницы — книжная

        .Draft = False

Пользователь не отметил пункт Черновая в блоке Печать

        .PaperSize = xlPaperA4

Размер бумаги А4

        .FirstPageNumber = xlAutomatic

Номер первой страницы — автоматически

        .Order = xlDownThenOver

Последовательность вывода страниц: вниз, потом вправо (пункт в блоке Печать)

        .BlackAndWhite = False

Пользователь не отметил пункт Черно-белая в блоке Печать

        .Zoom = 75

Масштаб 75 %

        .PrintErrors = xlPrintErrorsDisplayed

Пункт в блоке ПечатьОшибки ячеекКак на экране

        .OddAndEvenPagesHeaderFooter = False

Пользователь не задавал разные колонтитулы для четных и нечетных страниц (флажок в блоке Колонтитулы)

        .DifferentFirstPageHeaderFooter = False

Пользователь не задавал отдельный колонтитул для первой страницы (флажок в блоке Колонтитулы)

        .ScaleWithDocHeaderFooter = True

Флажок в блоке Колонтитулы – Изменять вместе с масштабом страницы отмечен пользователем

        .AlignMarginsHeaderFooter = True

Флажок в блоке Колонтитулы – Выровнять относительно полей страницы отмечен пользователем

        .EvenPage.LeftHeader.Text = «»

Текст колонтитулов для четных и первой страниц не задан

        .EvenPage.CenterHeader.Text = «»

        .EvenPage.RightHeader.Text = «»

        .EvenPage.LeftFooter.Text = «»

        .EvenPage.CenterFooter.Text = «»

        .EvenPage.RightFooter.Text = «»

        .FirstPage.LeftHeader.Text = «»

        .FirstPage.CenterHeader.Text = «»

        .FirstPage.RightHeader.Text = «»

        .FirstPage.LeftFooter.Text = «»

        .FirstPage.CenterFooter.Text = «»

        .FirstPage.RightFooter.Text = «»

    End With

Окончание процедуры With

End Sub

Окончание кода макроса

Редактирование макроса

Как видите, код макроса легко читаем и понятен. Кроме того, нам не надо нагромождать его лишними строками: так как в параметрах печати мы меняли только три пункта, остальные строки можем удалить (они будут установлены по умолчанию). Удалим ненужные строки, поставим комментарии и в итоге получим вот такой элегантный код:

Sub Форматирование_БДР()

‘ Макрос выделяет жирным курсивом итоги, форматирует отчет на печать

‘——————

‘ Выделяем столбцы и ставим фильтр по столбцу КОД

 Columns(«A:C»).Select

 Selection.AutoFilter

 ActiveSheet.Range(«$A$1:$C$34″).AutoFilter Field:=1, Criteria1:=»<>*.*», _

 Operator:=xlAnd

‘ Выделяем отфильтрованный диапазон полужирным шрифтом, снимаем фильтр

 Range(«A1:C34»).Select

 Selection.Font.Bold = True

 Selection.AutoFilter

 ‘ Форматируем на печать: верхний колонтитул, центрирование по горизонтали, масштаб 75 %

 With ActiveSheet.PageSetup

 .CenterHeader = «Бюджет на январь»

 .CenterHorizontally = True

 .Zoom = 75

 End With

End Sub

Ввод в код макроса функций и процедур

Теперь усложним код макроса, задав ему два параметра:

1. Название месяца отчета запрашиваем у пользователя.

2. Последняя строка отчета БДР (в случае если она плавающая) рассчитывается в коде макроса.

Функция InputBox

Чтобы запросить у пользователя месяц отчета, воспользуемся функцией Inputbox, которая выводит диалоговое окно, в котором пользователь может самостоятельно задать значение переменной, используемой в коде. Синтаксис функции InputBox:

Zapros = InputBox(«Текст запроса», <«Текст в шапке окна»>, <Значение по умолчанию>,…)

где Zapros — введенная вами переменная (имя придумываете вы сами), а в скобках через запятую перечисляются аргументы функции.

Обратите внимание: первый аргумент является обязательным, то есть любое диалоговое окно должно сопровождаться пояснительным текстом, чего вы ждете от пользователя. Следующие аргументы обязательными не являются и их можно не указывать. То есть если вы хотите задать значение по умолчанию, но не хотите писать текст в шапке диалогового окна, разделите первый и третий аргументы двумя запятыми, как это будет сделано в нашем примере (см. далее).

Для удобства присвойте полученное значение функции InputBox какой-нибудь введенной вами переменной, особенно если в коде макроса вы будете несколько раз использовать значение этой функции.

Важно

Имена вводимых переменных не должны совпадать с уже занятыми VBA словами под название объектов, свойств или функций!

В нашем примере присвоим результат вызова функции InputBox переменной Mes.

Например, нельзя завести свою переменную Range, Cells или Month — компилятор VBA предупредит вас, что делать этого нельзя, и не запустит макрос, пока вы не устраните ошибку (рис. 6).

Рис. 6. Пример ошибки при заведении переменной

Не забывайте любой текст в коде брать в кавычки! В противном случае компилятор VBA будет воспринимать этот текст как команды и выдавать ошибку, так как не сможет их обработать.

Итак, приступим к редактированию кода макроса. Добавим в самое начало кода макроса строки:

‘ Запрашиваем у пользователя месяц отчета

Mes = InputBox(«Введите название месяца отчета», , «Январь»)

Теперь при запуске макроса будет выводиться диалоговое окно, в котором пользователь самостоятельно сможет указать, за какой месяц этот отчет (рис. 7).

Рис. 7. Диалоговое окно для указания месяца

С помощью функции InputBox можно запросить у пользователя и длину отчета. Но мы научим Excel высчитывать ее самостоятельно. Для этого нам потребуется процедура While.

Процедура While

Используется в коде, если надо сделать одинаковые действия несколько раз подряд до тех пор, пока выполняется какое-либо условие. Синтаксис процедуры While:

Do While <условие, которое должно быть верным для выполнения процедуры>

 <список команд>

Loop

Условие может состоять из одного выражения или содержать несколько, перечисленных через оператор AND (то есть оба условия должны быть выполнены) или OR (достаточно выполнения только одного из перечисленных условий). Также условие обязательно должно содержать переменную-счетчик (это может быть номер строки или столбца ячейки, значения которой вы проверяете).

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

Если макрос ушел в цикл, прервите его с помощью комбинации клавиш Ctrl+Break и либо прекратите макрос (кнопка End), либо зайдите в код макроса и исправьте ошибку (кнопка Debug). Чтобы макрос не уходил в цикл, рекомендуется включить в блок условий «защиту от дурака». Например, добавляем в условие проверку, чтобы значение счетчика не превышало определенной, заведомо достаточной для нас величины.

Рассмотрим применение процедуры While для поиска конца отчета БДР.

Как видно на рис. 4, последняя строка отчета имеет код «500». Напишем процедуру, которая будет проверять значения в ячейках столбца «А» и остановит свои действия, когда найдет ячейку с кодом «500».

Обратите внимание!

Excel иногда воспринимает числа как текст, поэтому включим два условия проверки значения ячейки и добавим «защиту от дурака» на случай, если в форме отчета случайно затрется код последней строки.

Помним, что все текстовые значения надо брать в кавычки. Числа записываем без кавычек:

‘ Ищем последнюю строку отчета

Dim Row_End As Integer     ‘ Вводим переменную «счетчик номера строки»

Row_End = 1             ‘ Присваиваем ей номер 1

‘ Начинаем процедуру поиска последней строки отчета по коду «500»

Do While Cells(Row_End, 1).Value <> «500» And Cells(Row_End, 1).Value <> 500 And Row_End < 100

‘ До тех пор, пока код не равен 500 и номер строки меньше 100, выполняем наращивание счетчика

Row_End = Row_End +1

Loop

Таким образом, процедура While нам нужна только для наращивания счетчика — никаких дополнительных действий она не производит. Запомните этот прием — он часто нужен в кодировании.

Теперь заменим в изначальном коде макроса номер последней ячейки (34) на переменную Row_End. Число 34 было частью текста А1:С34, а теперь нам надо часть текста заменить на переменную. Делается это с помощью символа амперсанд &:

«текст» & переменная & «текст».

В нашем случае ссылка на диапазон А1:С34 будет записана так: А1:С & Row_End.

Кроме того, вспоминаем, что и название отчета Бюджет на январь у нас тоже теперь содержит параметр и будет записываться так: Бюджет на & Mes.

Не забывайте оставлять пробелы в кавычках перед переменной-словом, иначе текст сольется.

Еще раз взглянем на получившийся код макроса:

Sub Форматирование_БДР()

‘ Макрос выделяет жирным курсивом итоги, форматирует отчет на печать

‘ ——————

‘ Запрашиваем у пользователя месяц отчета

Mes = InputBox(«Введите название месяца отчета», , «Январь»)

‘ Ищем последнюю строку отчета

Dim Row_End As Integer     ‘ Вводим переменную «счетчик номера строки»

Row_End = 1             ‘ Присваиваем ей номер 1

‘ Начинаем процедуру поиска последней строки отчета по коду «500»

‘ Критичным значением для «защиты от дурака» принимаем номер строки 100

Do While Cells(Row_End, 1).Value <> «500» And Cells(Row_End, 1).Value <> 500 And Row_End < 100

‘ До тех пор, пока код не равен 500 и номер строки меньше 100, выполняем наращивание счетчика

Row_End = Row_End +1

Loop

‘ Выделяем столбцы и ставим фильтр на КОД

 Columns(«A:C»).Select

 Selection.AutoFilter

 ActiveSheet.Range(«$A$1:$C$» & Row_End).AutoFilter Field:=1, Criteria1:=»<>*.*», _

 Operator:=xlAnd

‘ Выделяем отфильтрованный диапазон полужирным шрифтом, снимаем фильтр

 Range(«A1:C» & Row_End).Select

 Selection.Font.Bold = True

 Selection.AutoFilter

‘ Форматируем на печать: верхний колонтитул, центрирование по горизонтали, масштаб 75 %

 With ActiveSheet.PageSetup

 .CenterHeader = «Бюджет на » & Mes

 .CenterHorizontally = True

 .Zoom = 75

 End With

End Sub

Теперь макрос стал более универсальным. Добавим в него еще одну «защиту от дурака».

Если нам принципиально, правильно ли макрос нашел последнюю строку отчета, после окончания процедуры While (строка Loop) можно добавить блок проверки значения Row_End и запроса у пользователя подтверждения на продолжение макроса.

Для этого изучим функцию MsgBox, процедуру IF и команду Exit Sub.

Функция MsgBox

MsgBox — еще один способ общения с пользователем: сообщения ему какой-то информации по ходу выполнения макроса или запрос у него подтверждения по дальнейшим действиям макроса путем нажатия на кнопки вида Yes, No, Ок, Cancel.

Она имеет два вида записи:

1. Мы просто сообщаем пользователю какую-то информацию. В этом случае аргументы функции перечисляются сразу же за функцией, без использования скобок:

MsgBox «Текст сообщения», <Вид кнопок>, <«Текст в шапке окна»>,…

На экране отобразится диалоговое окно, и после нажатия пользователем кнопки Ок продолжится выполнение макроса (рис. 8).

Рис. 8. Первый вид записи функции MsgBox

Как и в случае с функцией InputBox, обязательным здесь является только первый аргумент — Текст сообщения. Остальные можно даже не указывать, сократив вид записи функции до вида:

2. Нам важно, что ответил пользователь, мы записываем его ответ в значение какой-то переменной (рис. 9). В этом случае аргументы функции заключаются в скобки, а перед функцией обязательно должна стоять переменная, в которую мы записываем, на какую кнопку нажал пользователь:

YesNo = MsgBox(«Текст сообщения», <Вид кнопок>, <«Текст в шапке окна»>,…)

Рис. 9. Второй вид записи функции MsgBox

Варианты вида кнопок:

  •  vbOKOnly — только кнопка ОК;
  •  vbOKCanсel — кнопки ОК и Cancel;
  •  vbYesNo — кнопки Yes и No;
  •  vbYesNoCancel — кнопки Yes, No и Cancel.

Соответственно в зависимости от нажатой кнопки значения функции MsgBox могут быть vbOK, vbCancel, vbYes или vbNo.

Процедура If

С помощью данной процедуры можно разбить команды кода на две ветки в зависимости от выполнения заданного условия. Синтаксис процедуры If:

If <условие, которое должно быть верным> Then

 <список команд при выполнении указанного условия>

else

 <список команд при невыполнении указанного условия>

End If

Обязательным к заполнению является только условие. Список команд в обоих блоках заполнять не обязательно. В зависимости от ваших задач вы можете заполнить оба блока или только один из них. Условие может состоять из одного выражения или содержать несколько выражений, перечисленных через оператор AND (то есть оба условия должны быть выполнены) или оператор OR (достаточно выполнения только одного из перечисленных условий).

Команда Exit Sub

Прекращает выполнение макроса. Обычно ее используют в ветках процедуры If при проверке допустимости дальнейшего исполнения макроса. Обратите внимание: ни одно действие после команды Exit Sub выполнено не будет. Поэтому если вы хотите сообщить пользователю о принудительном прекращении процедуры, команду MsgBox нужно расположить выше команды Exit Sub.

Итак, объединим новые знания в код «защиты от дурака» и запишем его после строки Loop:

‘ Проверяем, дошла ли процедура While до «критичной» строки 100

‘ и спрашиваем подтверждение о продолжении выполнения макроса

If Row_End = 100 Then      

YesNo = MsgBox(«Поиск последней строки отчета дошел до 100, продолжаем?», vbYesNo)

If YesNo = vbNo Then          ‘ Если нажата кнопка «No», то…

MsgBox «Процедура прервана пользователем»   ‘ 1. выдаем сообщение для пользователя,

Exit Sub          ‘ 2. останавливаем макрос

End If

End If

В нашем коде прошло вложение одной процедуры If в другую:

  •  сначала мы проверили, дошел ли счетчик Row_End до значения 100;
  •  если дошел, мы спрашиваем у пользователя, продолжать ли нам выполнение макроса;
  •  если пользователь ответил «нет», останавливаем макрос.

В обеих процедурах If мы опустили второй блок (else): если Row_End не достиг значения 100 или пользователь ответил «да», макрос просто покинет процедуру If и продолжит выполнять команды, написанные ниже.

Каждая процедура If должна заканчиваться командой End If. Если количество строк с командой If не будет соответствовать количеству строк с командой End If, компилятор VBA сообщит об ошибке и вам придется искать, где вы потеряли конец процедуры If.

Поэтому рекомендуется сразу писать обе строки, а потом уже наполнять процедуру командами.

Также для удобства визуального восприятия кода макроса рекомендуется каждую вложенную процедуру начинать с отступа, чтобы визуально было понятно, где заканчивается вложенная процедура и продолжается список команд процедуры верхнего уровня.

Подведем итоги

Мы с вами научились:

  •  записывать макросы через команду Вид  Макросы  Запись макроса;
  •  редактировать автоматически записанный макрос, удалять из него лишние команды;
  •  унифицировать код макроса, вводя в него переменные, которые макрос запрашивает у пользователя или рассчитывает самостоятельно,

а также изучили функции InputBox и MsgBox, процедуры While и If, команду Exit Sub.

В следующем номере рассмотрим процедуру FOR, запишем макрос суммирования результирующих статей БДР, научимся тестировать макросы и выносить кнопки вызова макроса на панель быстрого доступа.


Статья опубликована в журнале «Справочник экономиста» № 4, 2016.

Содержание

  • 1 Adds two hyperlinks to active sheet
  • 2 All properties of PageSetup
  • 3 Change the name of the active worksheet
  • 4 Changing Boolean settings
  • 5 Defined a print area
  • 6 Inserts the sheet names into the SheetNames array
  • 7 Macro for changing page setup to landscape orientation
  • 8 Protecting a Worksheet
  • 9 Protects the myWorksheet worksheet with the same password but allows the formatting of cells and allows the sorting of unlocked cells:
  • 10 sort sheets
  • 11 toggles the Visible property of the Text Box
  • 12 To use the Copy function and Paste method, first insert the formula in the original cell as before, execute the Copy function of the Cells property, select the desired range, and paste the formula.
  • 13 Use For loop to fill a range
  • 14 Uses the Not operator to effectively toggle the page break display from True to False and from False to True

Adds two hyperlinks to active sheet

   <source lang="vb">

Public Sub AddHyperlinks()

   ActiveSheet.Hyperlinks.Add _
       Anchor:=Range("A1"), _
       Address:="", _
       SubAddress:=""Sheet1"!A1", _
       ScreenTip:=" Goes to Sheet1", _
       TextToDisplay:=" Link to Sheet1"
   ActiveSheet.Hyperlinks.Add _
       Anchor:=Range("A3"), _
       Address:=" http://www.microsoft.ru/ms.htm", _
       ScreenTip:=" Microsoft", _
       TextToDisplay:=" Microsoft web site"

End Sub

</source>
   
  

All properties of PageSetup

   <source lang="vb">

Sub Macro1()

   With ActiveSheet.PageSetup
       .PrintTitleRows = ""
       .PrintTitleColumns = ""
   End With
   ActiveSheet.PageSetup.PrintArea = ""
   With ActiveSheet.PageSetup
       .LeftHeader = ""
       .CenterHeader = "&A"
       .RightHeader = ""
       .LeftFooter = ""
       .CenterFooter = "Page &P"
       .RightFooter = ""
       .LeftMargin = Application.InchesToPoints(0.75)
       .RightMargin = Application.InchesToPoints(0.75)
       .TopMargin = Application.InchesToPoints(1)
       .BottomMargin = Application.InchesToPoints(1)
       .HeaderMargin = Application.InchesToPoints(0.5)
       .FooterMargin = Application.InchesToPoints(0.5)
       .PrintHeadings = False
       .PrintGridlines = True
       .PrintNotes = False
       .CenterHorizontally = False
       .CenterVertically = False
       .Orientation = xlLandscape
       .Draft = False
       .PaperSize = xlPaperLetter
       .FirstPageNumber = xlAutomatic
       .Order = xlDownThenOver
       .BlackAndWhite = False
       .Zoom = 100
   End With

End Sub

</source>
   
  

Change the name of the active worksheet

   <source lang="vb">

Sub changeName()

   ActiveSheet.name = "My Sheet"

End Sub

</source>
   
  

Changing Boolean settings

   <source lang="vb">

Sub Main()

   ActiveSheet.DisplayPageBreaks = False
   ActiveSheet.DisplayPageBreaks = True

End Sub

</source>
   
  

Defined a print area

   <source lang="vb">

Sub printArea()

    ActiveSheet.PageSetup.printArea = ""
    ActiveSheet.Names("Print_Area").delete

End Sub

</source>
   
  

Inserts the sheet names into the SheetNames array

   <source lang="vb">

Sub SortSheets()

   Dim SheetNames()
   SheetCount = ActiveWorkbook.Sheets.Count
   ReDim SheetNames(1 To SheetCount)
   For I = 1 To SheetCount
       SheetNames(I) = ActiveWorkbook.Sheets(I).name
       Debug.Print SheetNames(I)
   Next I

End Sub

</source>
   
  

Macro for changing page setup to landscape orientation

   <source lang="vb">

Sub Macro2()

   With ActiveSheet.PageSetup
       .Orientation = xlLandscape
   End With

End Sub

</source>
   
  

Protecting a Worksheet

   <source lang="vb">

Sub protect()

   ActiveWorksheet.Protect Password:="pass"
</source>
   
  

Protects the myWorksheet worksheet with the same password but allows the formatting of cells and allows the sorting of unlocked cells:

   <source lang="vb">

Sub protect()

   ActiveWorksheet.Protect Password:="pass", AllowFormattingCells:=True, _
       AllowSorting:=True

End Sub

</source>
   
  

sort sheets

   <source lang="vb">

Sub SortSheets()

   Dim SheetNames()
   SheetCount = ActiveWorkbook.Sheets.Count
   ReDim SheetNames(1 To SheetCount)
   For i = 1 To SheetCount
       SheetNames(i) = ActiveWorkbook.Sheets(i).Name
   Next i
   Call BubbleSort(SheetNames)

End Sub

</source>
   
  

toggles the Visible property of the Text Box

   <source lang="vb">

Sub ToggleHelp()

   ActiveSheet.TextBoxes("HelpText").Visible = Not ActiveSheet.TextBoxes("HelpText").Visible

End Sub

</source>
   
  

To use the Copy function and Paste method, first insert the formula in the original cell as before, execute the Copy function of the Cells property, select the desired range, and paste the formula.

   <source lang="vb">

Sub copy()

   Cells(2, "B").copy
   Range("B2:B10").Select
   ActiveSheet.Paste

End Sub

</source>
   
  

Use For loop to fill a range

   <source lang="vb">

Sub FillRange3()

   Dim StartVal As Long
   Dim NumToFill As Long
   Dim CellCount As Long
   StartVal = 2
   NumToFill = 5
   For CellCount = 1 To NumToFill
       ActiveCell.offset(CellCount - 1, 0) = StartVal + CellCount - 1
   Next CellCount

End Sub

</source>
   
  

Uses the Not operator to effectively toggle the page break display from True to False and from False to True

   <source lang="vb">

Sub TogglePageBreaks()

   On Error Resume Next
   ActiveSheet.DisplayPageBreaks = Not ActiveSheet.DisplayPageBreaks

End Sub

</source>

Мы часто печатаем вещи в своей работе и вручную устанавливаем некоторые параметры, например, горизонтальную или вертикальную печать. Разберитесь в свойствах PageSetup, задайте параметры печати с помощью нескольких коротких строк кода, затем вы можете установить их один раз, использовать постоянно, удобно и эффективно.

Объект PageSetup представляет инструкции по настройке страницы. Содержит все свойства настроек страницы (левое поле, нижнее поле, размер бумаги и т. Д.).

В следующем примере устанавливается альбомная ориентация печати, а затем выполняется печать рабочего листа.

With Worksheets("Sheet1")
     .PageSetup.Orientation = xlLandscape
     .PrintOut
 End With

1. Свойства, соответствующие вкладке «Страница»

Атрибуты Описание
FirstPageNumber Вернуть или установить номер первой страницы при печати указанного рабочего листа. Если установлено значение xlAutomatic, Microsoft Excel использует номер первой страницы. Значение по умолчанию — xlAutomatic. Длинный шрифт, читаемый и записываемый.
FitToPagesTall Верните или установите высоту страницы, используемую для масштабирования листа при его печати. Применяется только к рабочим листам. Тип варианта, читаемый и записываемый.
FitToPagesWide Верните или установите ширину страницы, используемую для масштабирования рабочего листа при его печати. Применяется только к рабочим листам. Тип варианта, читаемый и записываемый.
Orientation Возвращает или задает значение XlPageOrientation, которое представляет портретный или альбомный режим печати.
Pages Возвращает или задает количество страниц в коллекции Pages.
PaperSize Верните или установите размер бумаги. Может читать и писать XlPaperSize.
PrintQuality Вернуть или установить качество печати. Тип варианта, читаемый и записываемый.
Zoom Возвращает или задает значение Variant, которое представляет собой процентное значение от 10% до 400%. Этот процент представляет собой коэффициент масштабирования, когда Microsoft Excel печатает рабочий лист. Это свойство применяется только к листам. Если для этого атрибута установлено значениеFalse, ЗатемFitToPagesWide с участием FitToPagesTallАтрибуты определяют способ масштабирования листа. При любом увеличении сохраняется соотношение сторон исходного документа.

В этом примере Sheet1 настраивается для печати в альбомной ориентации.

Рабочие листы ("Sheet1"). PageSetup.FirstPageNumber = 100 'Установить номер первой страницы, когда Sheet1 печатается до 100
   Рабочие листы ("Sheet1"). PageSetup.Orientation = xlLandscape'Set Sheet1 для альбомной печати
   Рабочие листы ("Sheet1"). PageSetup.Orientation = xlPortrait'Set Sheet1 для портретной печати
   С помощью рабочих листов ("Sheet1"). PageSetup'Print Sheet1 в соответствии с шириной и высотой страницы
     .Zoom = False
     .FitToPagesTall = 1
     .FitToPagesWide = 1
 End With
   Рабочие листы ("Sheet1"). PageSetup.PaperSize = xlPaperA4 'Установите размер бумаги Sheet1 на A4
   Рабочие листы ("Sheet1"). PageSetup.Zoom = 150 'Установите коэффициент масштабирования при печати Sheet1 на 150%

2. Свойства, соответствующие вкладке «Поля».

Установление и возврат маржи в пунктах. быть полезнымInchesToPoints Метод преобразования дюймов в фунты, вы также можете использоватьCentimetersToPoints Метод перевода сантиметров в точки.

Точка: относится к единице измерения высоты печатаемых символов. Фунт равен 1/72 дюйма или примерно равен 1/28 сантиметра. )

Атрибуты Описание
BottomMargin Возвращает или задает размер нижнего поля в пунктах. Двойной тип, читаемый и записываемый.
CenterHorizontally Если указанный рабочий лист напечатан в центре страницы по горизонтали, значение атрибута равно True. Логический тип, доступный для чтения и записи.
CenterVertically Если указанный рабочий лист напечатан в центре страницы по вертикали, значение атрибута равно True. Логический тип, доступный для чтения и записи.
FooterMargin Вернуть или установить расстояние от нижнего колонтитула до низа страницы в пунктах. Двойной тип, читаемый и записываемый.
HeaderMargin Вернуть или установить расстояние от верха страницы до верхнего колонтитула в пунктах. Двойной тип, читаемый и записываемый.
LeftMargin Возвращает или задает размер левого поля в пунктах. Двойной тип, читаемый и записываемый.
RightMargin Возвращает или задает размер правого поля в пунктах. Двойной тип, читаемый и записываемый.
TopMargin Возвращает или задает размер верхнего поля в пунктах. Двойной тип, читаемый и записываемый.

В следующем примере устанавливаются все поля первого листа.

With Worksheets(1).PageSetup
     .LeftMargin = Application.InchesToPoints(0.5)
     .RightMargin = Application.InchesToPoints(0.75)
     .TopMargin = Application.InchesToPoints(1.5)
     .BottomMargin = Application.InchesToPoints(1)
     .HeaderMargin = Application.InchesToPoints(0.5)
     .FooterMargin = Application.InchesToPoints(0.5)
 End With
Рабочие листы ("Sheet1"). PageSetup.CenterHorizontally = True 'Установить Sheet1 для печати по горизонтали и центру.
 Рабочие листы ("Sheet1"). PageSetup.CenterVertical = True'Set Sheet1 для вертикального центрирования и печати

Эти два свойства аналогичны настройке содержимого ячейки по центру по горизонтали и вертикали.

3. Свойства, соответствующие вкладке «Верхний / нижний колонтитул».

Атрибуты Описание
AlignMarginsHeaderFooter Если Excel выравнивает верхний и нижний колонтитулы с полями, заданными в параметрах настройки страницы, он возвращает True. Чтение / запись логического типа.
CenterFooter Отцентрируйте информацию нижнего колонтитула в объекте PageSetup. Чтение / запись типа String.
CenterFooterPicture Возвращает графический объект, который представляет изображение в средней части нижнего колонтитула. Используется для установки атрибутов, связанных с изображением.
CenterHeader Выровняйте информацию заголовка по центру объекта PageSetup. Чтение / запись типа String.
CenterHeaderPicture Возвращает графический объект, который представляет изображение в средней части заголовка. Используется для установки атрибутов, связанных с изображением.
DifferentFirstPageHeaderFooter Истинно, если на первой странице используется другой верхний или нижний колонтитул. Чтение / запись логического типа.
LeftFooter Возвращает или задает выравнивание текста в левом нижнем колонтитуле книги или раздела.
LeftFooterPicture Возвращает графический объект, который представляет изображение в левой части нижнего колонтитула. Используется для установки атрибутов, связанных с изображением.
LeftHeader Возвращает или задает выравнивание текста в левом заголовке книги или раздела.
LeftHeaderPicture Возвращает графический объект, который представляет изображение в левой части заголовка. Используется для установки атрибутов, связанных с изображением.
OddAndEvenPagesHeaderFooter Если нечетные и четные страницы указанного объекта PageSetup имеют разные верхние и нижние колонтитулы, значение этого атрибута равно True. Логический тип, доступный для чтения и записи.
RightFooter Возвращает или задает расстояние (в пунктах) между правым краем страницы и правым краем нижнего колонтитула. Чтение / запись типа String.
RightFooterPicture Возвращает графический объект, который представляет изображение в правой части нижнего колонтитула. Используется для установки атрибутов изображения.
RightHeader Вернуть или установить правую часть заголовка. Чтение / запись типа String.
RightHeaderPicture Укажите графическое изображение, которое должно отображаться в правом заголовке. Только чтение.
ScaleWithDocHeaderFooter Возвращает или задает, будут ли масштабироваться верхний и нижний колонтитулы вместе с документом при изменении размера документа. Чтение / запись логического типа.

4. Свойства, соответствующие вкладке «Рабочий лист»

Атрибуты Описание
BlackAndWhite Если элементы в указанном документе напечатаны черно-белыми, значение атрибута равно True. Логический тип, доступный для чтения и записи.
Draft Если графика на листе не печатается при печати, значение атрибута равно True. Логический тип, доступный для чтения и записи.
Order Возвращает или задает значение XlOrder, которое представляет порядок, который Microsoft Excel использует для нумерации страниц при печати большого рабочего листа.
PrintArea Верните или установите область для печати в виде строки, которая использует ссылку стиля A1 макроязыка. Тип строки, доступный для чтения и записи.
PrintComments Вернуть или установить способ печати комментариев на листе. Тип XlPrintLocation, доступный для чтения и записи. Вы можете распечатать комментарии в виде текстовых полей или концевых сносок.
PrintErrors Устанавливает или возвращает константу XlPrintErrors, которая указывает тип отображаемой ошибки печати. Эта функция позволяет пользователям отменять отображение ошибок при печати рабочего листа. Могу читать и писать.
PrintGridlines Если линии сетки ячеек напечатаны на странице, значение равно True. Применяется только к рабочим листам. Логический тип, доступный для чтения и записи.
PrintHeadings Если заголовки строк и столбцов печатаются одновременно при печати этой страницы, значение равно True. Применяется только к рабочим листам. Логический тип, доступный для чтения и записи.
PrintNotes Если при печати рабочего листа комментарии к ячейкам печатаются вместе как концевые сноски, значение равно True. Применяется только к рабочим листам. Логический тип, доступный для чтения и записи.
PrintTitleColumns Возвращает или задает столбец, содержащий ячейки, которые повторно появляются в левой части каждой страницы, выраженные строкой на языке макросов в стиле A1. Тип строки, доступный для чтения и записи. Установите для этого атрибута значениеFalseИли пустая строка («»), строка заголовка будет закрыта.
PrintTitleRows Возвращает или задает те строки, которые содержат ячейки, которые многократно появляются в верхней части каждой страницы, выраженные в нотации стиля A1 с помощью строк макроязыка. Тип строки, доступный для чтения и записи.
Рабочие листы ("Sheet1"). PageSetup.BlackAndWhite = True 'Установить рабочий лист Sheet1 для черно-белой печати
   Рабочие листы ("Sheet1"). PageSetup.Draft = True'Закрыть печать графики в Sheet1
   Рабочие листы ("Sheet1"). PageSetup.Order = xlOverThenDown'Set Sheet1 для разделения на несколько страниц для печати. Пронумеруйте и распечатайте слева направо и сверху вниз.
   Рабочие листы ("Sheet1"). PageSetup.PrintArea = "$ A $ 1: $ C $ 5" 'Установите для области печати ячейки A1: C5 на Sheet1
   Worksheets (1) .PageSetup.PrintComments = xlPrintSheetEnd 'позволяет печатать комментарии как концевые сноски
   Worksheets ("Sheet1"). PageSetup.PrintGridlines = True 'Печатать линии сетки ячеек одновременно с печатью Sheet1
   Рабочие листы ("Sheet1"). PageSetup.PrintHeadings = False 'Отключить печать заголовка на Sheet1
   Рабочие листы ("Sheet1"). PageSetup.PrintNotes = False'Закрыть примечания к печати
   ActiveSheet.PageSetup.PrintTitleRows = ActiveSheet.Rows (3) .Address 'определяет третью строку как строку заголовка
   ActiveSheet.PageSetup.PrintTitleColumns = ActiveSheet.Columns ("A: C"). Address 'определяет столбцы с первого по третий как столбцы заголовков

PrintComments свойство

Установить аннотации

Комментарий будет напечатан на новой странице.

5. Атрибуты, не соответствующие вкладкам

Атрибуты Описание
Application Если идентификатор объекта не используется, это свойство возвращает объект Application, представляющий приложение Microsoft Excel. Если используется идентификатор объекта, это свойство возвращает объект Application, представляющий создателя указанного объекта (вы можете использовать это свойство в объекте автоматизации OLE, чтобы вернуть приложение объекта). Только чтение.
Creator Возвращает 32-битное целое число, указывающее приложение, создавшее объект. Только чтение Длинный тип.
EvenPage Возвращает или задает выравнивание текста на четных страницах книги или раздела.
FirstPage Возвращает или задает выравнивание текста на первой странице книги или раздела.
Parent Возвращает родительский объект указанного объекта. Только чтение.

Range.PrintOut метод

Этот метод эквивалентен нажатию кнопки печати в Excel для выполнения операции печати. Этот метод позволяет указать принтер для печати.

Выражение выглядит следующим образом.

.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName)

название Описание
From Номер начальной страницы для печати. Если этот параметр не указан, печать начнется с начальной позиции.
To Номер конечной страницы печати. Если этот параметр не указан, печать будет до последней страницы.
Copies Количество копий для печати. Если этот параметр не указан, будет напечатана только одна копия.
Preview Если этоTrue, Microsoft Excel вызовет предварительный просмотр перед печатью объекта. Если этоFalse(Или опустите этот параметр), объект будет немедленно напечатан.
ActivePrinter Задайте имя активного принтера.
PrintToFile Если этоTrue, Затем распечатайте в файл. Если не указаноPrToFileName, Microsoft Excel предложит пользователю ввести имя файла вывода, который будет использоваться.
Collate Если этоTrue, Печать нескольких копий с подборкой.
PrToFileName в случае PrintToFileУстановить какTrue, Параметр указывает имя файла для печати.

Заметка:From с участием ToОписанная «страница» относится к странице, которая будет напечатана, а не ко всем страницам в указанном листе или книге.


Публичный аккаунт WeChat: VBA168

Адрес магазина Taobao:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-21233576391.4.1af0683dzrx3oU&id=584940166162

Обратите внимание на общедоступную учетную запись WeChat и каждый день получайте объяснения классических примеров Excel VBA.

Магазины Taobao предоставляют услуги настройки Excel.

Желаю вам легче работать и учиться!

Like this post? Please share to your friends:
  • Vba excel activecell что это
  • Vba and excel and count rows
  • Vba excel activecell свойства
  • Vba and excel 2016
  • Vba excel active cell