Настройка полей excel vba

Обновлено: 07.07.2024

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

Предполагается, что вы знаете основы Visual Basic. Я не буду рассказывать, как создавать формы или модули, здесь только примеры кода.

Visual Basic

Опции

Во-первых, в VB массивы могут начинаться с индекса 1, что для многих странно, поэтому в начале модулей можно прописывать:

Так же рекомендуется прописать:

В этом случае интерпретатор потребует заблаговременного объявления всех переменных. Переменные объявлять нужно потому, что:
— VB запомнит их нАпиСание и не будет исправлять во всём коде на последний введенный вариант;
— иногда возникают ошибки с передачей переменных byRef, если они не объявлены (то есть надо или объявить переменную, или приписать в функции/процедуре перед ней byVal).

Ещё одним важным оператором является ON ERROR. Привожу варианты:

Возможности языка

Хотя VB довольно прост, полезно почитать документацию по его синтаксису. Я, например, с удивлением узнал, что можно прописывать сложные усолвия в SELECT'ах (аналог switch):

Ускорение работы макросов

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

Важно понимать, что VBA выполняет все действия так же, как и пользователь. Поэтому для того, чтобы установить параметры страницы, он каждый раз открывает и закрывает окно параметров. У меня выставлялись параметры для 10 листов, это реально не быстро. Поэтому делаем так:


Далее, часто нужно просмотреть различные диапазоны ячеек и что-то с ними сделать. Тут важно не использовать циклы for с перебором индексов, они медленные. Можно использовать встроенные функции Экселя, но удобнее всего такой вариант:
Данный код просматривает указанный диапазон, выбирает в нем «специальные ячейки», в данном случае все, в которых есть формулы (т.е. начинаются со знака равно). Для каждой ячейки смотрится, если она не закрашена, то её надо защитить (см. далее) и покрасить. Такой код работает очень быстро.

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

Естественно, что если вам нужны однотипные значения в ячейках, нужно использовать автозаполнение, всё равно как «растягивание» ячеек пользователем.

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

Загрузка книги и события

При открытии книги каждый раз срабатывает процедура.
В данном случае настройки печати (поля, ориентация) сбрасываются на дефолтные. Можно и другую инициализацию выполнять. Важно, что если макросы отключены, то и не выполнится ничего. Если в Экселе вылезла вверху панелька с предупреждением о макросах и пользователь нажал «Включить», то именно в этот момент выполнится процедура Workbook_open().

Список доступных событий можно посмотреть вверху редактора VB. Например, я делал на событие Change проверку, где лежит ячейка, в которой было изменения, и если это нужный диапазон, то делалась запись в лог со старым и новым значением.

Защита

Во-первых сразу отмечу, что MS Office не исполняет макросы на компьютерах, где он не нашел антивируса, если книга зашифрована. Сталкивался на компьютерах, где антивирус был, но видимо Windows XP об этом не знала.

Ещё антивирус может странным образом мешать работе, вызывать ошибки, не совсем объяснимые. Показал айтишникам, сказали ок, что-то сделали, не знаю.

Итак, нам надо защитить книгу, чтобы ввод был разрешен только в нужные ячейки (формулы и заголовки поменять нельзя). Во-первых, нужно сделать соответствующие ячейки «не защищенными». Для этого делаем одно из:
— выделяем диапазон, формат ячеек, снять галочку «Блокировать ячейку»;
— выводим кнопку «Блокировать ячейку» в быстрый доступ и нажимаем её, очень удобно смотреть на неё чтобы понять, защищена ячейка или же нет;
— а это пригодится, чтобы проверить третий вариант — написать макрос, который снимает защиту с нужных ячеек сам.

Далее нужно защитить лист. На вкладке Рецензирование есть такая кнопка. Окошко просит ввести пароль и установить исключения (что можно будет делать пользователю). К сожалению, список исключений маловат. Самое обидное, что нельзя разрешить сворачивать/разворачивать группы столбцов/строк. Поэтому действуем так, на загрузку книги прописываем:
Знак подчеркивания продолжает логическую строку на следующей физической строке. Итак, здесь мы:
1. Сняли защиту.
2. Включили группировку.
3. Поставили защиту, при этом:
— защита только от юзера, макросы продолжают иметь полный доступ (!), крайне важно;
— разрешили сортировку, фильтрацию и форматирование строк/столбцов (высота/ширина);
— DrawingObject в данном случае снимает защиту с примечаний к ячейкам, может и ещё с чего.

Тут мы сталкиваемся с парой сюрпризов. Во-первых, не все макросы будут работать даже так. Известный баг, ничего не сделаешь. Нельзя вставить строку, например. Приходится снимать и тут же ставить защиту. Если «злоумышленник» в этот момент нажмет ctrl+break, то защита слетит.

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

Решением (костылем) является добавление кнопки или сочетания клавиш для удаления. Заодно можно проверить, чтобы пользователь не удалил чего не надо. В Workbook_open добавляем:

Теперь процедура будет вызываться при нажатии shift+delete.
Знаю, код некрасивый, простите. Здесь я пытался проверить, что выделена строка, то есть строк там 1, а ячеек не меньше тысячи. Чтобы удалить не то, придется выделить тысячу ячеек начиная не с первого столбца. Далее проверяется имя листа и номера строк. Вместо 50 был расчет последенй строки (ведь их число меняется, если мы их удаляем и добавляем).

Заключение

VBA — весьма глючная вещь, которая позволяет сворачивать горы в MS Office. Многие предприятяи используют модели на Excel годами, и если они сделаны хорошо, то всё работает.

Для изучения VBA подходит он сам, во-первых там хорошая справка. Например, чтобы узнать все варианты что можно разрешить в методе Protect, нажимаем F1, Protect, ввод. И вуаля.

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

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

Текстовое поле на пользовательской форме

Текстовое поле незаменимо, когда необходимо заполнить пользовательскую форму новой информацией. Например, это может быть ФИО нового сотрудника и его паспортные данные, сумма выручки за день, новый электронный адрес и многое-многое другое.

Если с помощью текстового поля требуется вводить заранее известную информацию, элементы которой можно сгруппировать в список, то в этом случае удобнее вместо элемента управления TextBox использовать ListBox или ComboBox.

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

Иногда, если на пользовательской форме используется только одно текстовое поле и кнопка «OK» (или кнопки «OK» и «Отмена»), для ввода информации такую форму можно заменить функцией InputBox, а для вывода информации, когда не требуется редактирование отображаемого текста, – функцией MsgBox.

Свойства текстового поля

Свойство Описание
AutoSize* Автоподбор размера текстового поля. True – размер автоматически подстраивается под длину размещаемой строки. False – размер элемента управления определяется свойствами Width и Height.
AutoTab Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена.
ControlSource Ссылка на источник данных для поля TextBox.
ControlTipText Текст всплывающей подсказки при наведении курсора на TextBox.
Enabled Возможность ввода, редактирования, копирования, вставки, удаления текста. True – все перечисленные опции включены, False – выключены (цвет текста в поле становится серым).
Font Шрифт, начертание и размер текста в поле.
Height Высота текстового поля.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края текстового поля.
Locked Запрет ввода, редактирования, удаления текста. True – перечисленные опции запрещены (разрешено выделение и копирование текста), False – перечисленные опции разрешены.
MaxLenght Максимальная длина строки. По умолчанию – 0, что означает – ограничений нет.
Multiline Устанавливает многострочный (True) или однострочный (False) режим ввода-вывода текста.
PasswordChar Задает символ, который будет отображаться при вводе знаков пароля.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой свойством AutoTab или нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
Text** Текстовое содержимое (значение) поля (=Value).
TextAlign Выравнивание текста: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края текстового поля.
Value** Текстовое содержимое (значение) поля (=Text).
Visible Видимость текстового поля. True – TextBox отображается на пользовательской форме, False – TextBox скрыт.
Width Ширина текстового поля.
WordWrap Актуально при Multiline = True. Переход на новую строку при достижении границы текстового поля. True – переход включен, False – переход выключен.

* При использовании свойства AutoSize в значении True следует учитывать, что автоматическое изменение размеров поля при вводе текста может нарушить дизайн пользовательской формы.
** Text и Value — это два обозначения одного и того же свойства. Если в окне Properties элемента управления TextBox в поле свойства Text начать ввод строки, в поле Value ввод будет дублироваться. И наоборот, при вводе текста в поле свойства Value, дублирование произойдет в поле Text.

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

Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление текстового поля и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления TextBox на проекте пользовательской формы.

Привязка текстового поля к ячейке

Привязать элемент управления TextBox к ячейке на рабочем листе можно двумя способами.

1. В окне Properties элемента управления TextBox в поле свойства ControlSource необходимо указать адрес ячейки:

Наряду с кнопкой очень часто используются элементы ввода данных. Здесь в первую очередь следует рассмотреть элемент управления «Поле» (рис. 1.15). На его пиктограмме нанесены буквы ab. Данный элемент более известен под названием Текстовое окно, что подчеркивает его функциональность (элемент предназначен для ввода текста с клавиатуры). Это связано с его англоязычным названием — TextBox. В связи с этим далее по тексту мы будем использовать более соответствующее смыслу название данного элемента управления — текстовое окно.

Рис. 1.15. Размещение поля (текстового окна) на рабочем листе

Рис. 1.15. Размещение поля (текстового окна) на рабочем листе

Существует еще один, в определенной степени похожий, элемент управления — «Надпись». Как правило, он используется для отображения на экране статического поясняющего текста. На пиктограмме этого элемента изображена большая буква А. В функциональном плане текстовое окно и надпись несколько похожи, однако, в отличие от текстового окна, ввод информации с клавиатуры в элемент управления «Надпись» невозможен.

Для иллюстрации этих элементов рассмотрим несложный пример (рис. 1.16), в котором мы используем три элемента управления: кнопку, текстовое окно и надпись. Подберем следующие значения для свойства Name этих элементов:

  • Btn — кнопка;
  • Txb — текстовое окно;
  • Lbl — надпись.

Рис. 1.16. Размещение на листе надписи, кнопки и текстового окна

Рис. 1.16. Размещение на листе надписи, кнопки и текстового окна

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

Нас интересует событие, связанное с изменением содержания текстового окна, поэтому дважды щелкнем в текстовом окне. В результате перед вами автоматически открывается новое окно редактора Visual Basic, которое показано на рис. 1.17. В его правой части расположен раздел, предназначенный для написания программного кода, где мы и будем писать строки программы. Здесь в верхней части присутствует два списка (каждый из которых открывается щелчком на стрелке). Левый список (в данном случае в нем указано имя текстового окна — Txb) содержит перечень объектов, которые нам доступныпри программировании. Правый список включает в себя возможные события, связанные с объектом, который предварительно выбран в левом списке. Таким образом, мы будем использовать технологию
событийного программирования.

Рис. 1.17. Окио редактора Visual Basic

Рис. 1.17. Окио редактора Visual Basic

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

Нас сейчас интересует событие, связанное с вводом информации в текстовое окно. Оно происходит, когда мы добавляем очередной символ в текстовое окно (или удаляем из него). Таким образом, в левом списке (см. рис. 1.17) следует выбрать Txb, а затем в правом — Change (изменение). В результате этого в окне редактора Visual Basic перед нами откроется текст процедуры, которая будет автоматически выполняться при изменениях в текстовом окне (вводе либо удалении символов).

Начало рассматриваемой процедуры определяется строкой Private Sub Txb_Change () , а завершение — End Sub. Здесь Txb_Change ( ) — имя процедуры, которое формируется автоматически из двух составляющих: Txb (имя объекта, которое мысами ему присвоили) и Change. Подобные процедуры называются предопределенными — они объективно существуют и выполняются всегда при совершении определенного действия. В данном случае описываемая процедура выполняется автоматически, когда происходит изменение в текстовом окне. Существуют и другие процедуры, к которым непосредстветпю обращаются программным путем (вызовы процедур располагаются в тексте программного кода).

Возможем и другой способ перехода в окно редактора кода — для этого следует воспользоваться пиктограммой Visual Basic (рис. 1.16).

Продолжим нашу разработку; и сейчас необходимо написать программный код, приведенный на рис. 1.18. Фактически от нас требуется написать единственную строку, которую мы далее прокомментируем.

Рис. 1.18. Процедура, выполняемая при изменениях в текстовом окне

Рис. 1.18. Процедура, выполняемая при изменениях в текстовом окне

Конструкция Lbl.Caption говорит о том, что у объекта с именем Lbl рассматривается свойство Caption. Значение этого свойства определяет текст, который располагается в надписи. Знак равенства и последующая фраза говорят о том, что рассматриваемому свойству присваивается значение Txb.Text.

На данном этапе мы на рабочем листе Microsoft Excel создали необходимые элементы управления (надпись, кнопку и текстовое окно) и написали текст процедуры, выполняемой при изменении текста в текстовом окне. Теперь можно перейти из редактора Visual Basic на лист Microsoft Excel, выйти из режима конструктора и проверить работу начать набирать текст в окне. В этом случае вы увидите результат, подобный показанному на рис. 1.19.

Рис. 1.19. Результат ввода текста в текстовое окно

Рис. 1.19. Результат ввода текста в текстовое окно

Осталось обеспечить еще одно функциональное действие. Так, в формулировке задания мы сказали, что кнопка Очистка должна выполнять очистку содержимого как текстового окна, гак и надписи. В листинге 1.1 приведена необходимая для этого процедура, выполняемая при щелчке на кнопке Очистка.

//Листинг 1.1. Обработка щелчка на кнопке Очистка Private Sub Btn_Click () Lbl.Caption = "" Txb.Text = "" End Sub

Для автоматического переноса длинного текста в текстовом окне со строки на строку для свойства MultiLine следует установить значение True. Альтернативным вариантом значения указанного свойства является False (в этом случае текст будет размещаться в окне только в одной строке, и при длинном фрагменте в текстовом окне будет видна только его часть).

Значение свойства Text определяет информацию, которая присутствует в текстовом окне. И, таким образом, изменения в текстовом окне автоматически будут отражаться в надписи.

Для автоматического переноса длинного текста в текстовом окне со строки на строку для свойства MultiLine следует установить значение True.

Подведем небольшой итог. Мы рассмотрели основные технические действия, которые следует выполнять при создании программных разработок в Microsoft Excel. Их можно сформулировать следующим образом:

В данном примере представлены исходные коды и описания для макросов, которые позволяют настраивать и форматировать любые сводные таблицы.

Макрос для обновления сводной таблицы в Excel

Для примера воспользуемся тестовой сводной таблицей из предыдущего примера: Макрос для создания сводной таблицы в Excel.

Исходная сводная таблица.

Данной сводной таблице уже присвоено внутреннее имя «ТаблицаМ» (как описано в предыдущем примере, перейдите по ссылке выше картинки). Каждая сводная таблица состоит из 4-ох видов полей:

Поля фильтров содержат ту часть таблицы исходных данных, которые необходимо проанализировать уже в сводной таблице. В примере следует проанализировать объем оборотов по отдельным магазинам фирмы. Как поле колон, так и поле строк определяет соответственно ту часть исходных данных, которую необходимо сортировать по строкам или по столбцам. Нет здесь определенного правила – все зависит от желаемого результата, который необходимо получить.

В данном примере определено:

  1. Столбец в исходных данных «Год» – находиться в поле фильтров.
  2. «Месяц» – определен как поле строк.
  3. «Магазины» – подчиненный к полю колон.
  4. «Оборот» – это поле значений, соответственно.

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

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

With ActiveSheet.PivotTables("ТаблицаМ")
.SmallGrid = True
.PivotFields("Оборот").Orientation = xlDataField
.PivotFields("Год").Orientation = xlPageField
.PivotFields("Месяц").Orientation = xlRowField
.PivotFields("Магазины").Orientation = xlColumnField
End With

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

Примечание. «ТаблицаМ» – это внутреннее имя таблицы, которое было ей присвоено при создании для того, чтобы на нее было легче ссылаться в том числе и в коде макроса.

И к такому объекту должно относиться каждое поле настраивая порядок полей для сводной таблицы.

Заголовки столбцов, которые необходимо упорядочить определенным полем указываем (в скобках) как аргумент в методе PivotFields перед его свойством Orientation. В конце строки указываем параметром, какое поле было определено. Для этого к распоряжению язык VBA предоставляет нам выше упоминаемые 4 типа полей:

ПоляКод VBA
ФИЛЬТРЫxlPageField
СТРОКИxlRowField
КОЛОННЫxlColumnField
ЗНАЧЕНИЯxlDataField

С помощью этих 4 строк VBA-кода макроса можно полностью изменить и по-другому настроить сводную таблицу. Разные настройки полей можно генерировать простейшими макросами, благодаря чему можно моментально перенастроить структуру любой сводной таблицы. Так даже намного удобнее, чем вручную перетягивать мышкой поля на уровне пользовательского интерфейса для настройки сводной таблицы в Excel.

Создадим макрос для изменения и настройки полей сводной таблицы. Откройте редактор макросов (ALT+F11) и создайте модуль если он еще не создан: «Insert»-«Module».

Введете код макроса, в результате которого будет выполнена автоматическая перенастройка структуры сводной таблицы с помощью изменения расположения полей для заголовков исходной таблицы «Магазины» и «Год»:

Sub ChangeTableM()
With ActiveSheet.PivotTables( "ТаблицаМ" )
.PivotFields( "Магазины" ).Orientation = xlPageField
.PivotFields( "Год" ).Orientation = xlColumnField
End With
End Sub

Код макроса.

Чтобы запустить макрос нажмите комбинацию горячих клавиш (ALT+F8) или выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«ChangeTableM» и нажмите на кнопку «Выполнить».

Новые настройки полей.

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

Обратите внимание! В первой версии структуры сводной таблицы поле страницы служило для выбора года, относительного к соответственным показателям оборота магазинов фирмы. А теперь поле страниц служит для выбора соответственного магазина фирмы. В то же время года находятся в заголовках столбцов (поле КОЛОННЫ).

Форматирование сводной таблицы макросом

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

Снова нажмите комбинацию горячих клавиш (ALT+F8) или выберите: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«FormatDeneg» и нажмите «Выполнить».

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

В результате действия этого короткого и простого макроса все числовые значения в таблице будут преобразованы в денежный формат рублей (с разделителем тысяч и без копеек). Запустив макрос «FormatDeneg» сводная, таблица приобретет следующий вид:

Форматирование значений.

В коде макроса мы использовали свойство NumberFormat, которое играет главную роль в форматировании чисел. В параметрах свойства мы просто указываем тип формат для отображения значения. Разновидность типов можно взять из списка: «ГЛАВНАЯ»-«Ячейки»-«Формат»-«Формат ячеек» (CTRL+1).

Числовые форматы.

В появившемся окне на закладке «Число» выберите опцию «(все форматы)» из списка «Числовые форматы:». В правом поле «Тип:» можно подобрать свой желаемый параметр для свойства NumberFormat.

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

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

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

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


Атрибуты Описание
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.

Читайте также: