[an error occurred while processing this directive]

В начало

Введение

1-й час. Знакомство с Visual Basic for Applications

2-й час. Работа с макросами

3-й час. Работа с элементами управления

4-й час. Переменные и константы

5-й час. Ввод данных

6-й час. Логика условных операторов

7-й час. Циклические вычисления

8-й час. Введение в объекты

9-й час. Основные объекты Excel

10-й час. Объект Range

11-й час. Редактор Visual Basic

12-й час. Отладка программ

13-й час. Обработка ошибок

14-й час. Экранные формы

15-й час. Автоматизация экранных форм

16-й час. Панели инструментов

17-й час. Работа с меню

18-й час. Диаграммы

19-й час. Сводные таблицы

20-й час. Получение внешних данных

21-й час. Доступ к данным с помощью ADO

22-й час. Еще об ADO

23-й час. Автоматизация

24-й час. Выполнение процедур

Приложение. Ответы

2-й час. Работа с макросами

В 1-м часе "Знакомство с Visual Basic for Applications" мы рассмотрели основы работы с макросами. В этом часе мы сосредоточим внимание на более сложных темах, связанных с макросами. Напомню, что мы изучаем макросы для дальнейшего их применения при написании кодов VBA. Позднее, при создании приложений VBA, вы будете использовать технические приемы, описанные в этом часе.

В этом часе будут рассмотрены следующие вопросы.

  • Назначение макросам комбинаций клавиш.
  • Где можно хранить макросы.
  • Создание личной книги макросов.
  • Назначение макросов кнопкам и графическим объектам.

Назначение макросам комбинаций клавиш

Для более эффективного использования макросов им можно назначать комбинации клавиш. Назначенная комбинация клавиш - это такой набор клавиш, при нажатии которых выполняется какая-либо команда или макрос. Например, для выполнения команды копирования вы применяете известную любому пользователю комбинацию клавиш <Ctrl+C>. Excel позволяет назначать комбинации клавиш любому макросу. Назначаемая комбинация клавиш должна содержать клавишу <Ctrl> и клавишу с любой буквой по вашему выбору. После назначения макросу комбинации клавиш вы можете использовать ее для выполнения макроса наравне с командой Макрос > Макросы из меню Сервис.

Назначаемые вами комбинации клавиш отменяют любые используемые в Excel по умолчанию или ранее назначенные комбинации клавиш. Другими словами, если вы назначите своему макросу комбинацию клавиш <Ctrl+C>, то теперь при нажатии этой комбинации не будет выполняться привычная всем команда копирования, а будет выполняться ваш макрос. Чтобы избежать подобных "накладок" при назначении макросам комбинации клавиш, я советую вам распечатать список используемых в Excel комбинаций клавиш. Для этого выполните следующие действия.

  1. В окне справочной системы Excel перейдите на вкладку Содержание.
  2. В папке Использование сочетаний клавиш выделите книгу Сочетания клавиш.
  3. Щелкните правой кнопкой мыши на книге Сочетания клавиш и в контекстном меню выберите команду Печать.
  4. В открывшемся диалоговом окне Печать раздела установите переключатель Напечатать все содержимое текущего заголовка и щелкните на кнопке ОК.

Комбинацию клавиш можно назначить макросу как в процессе создания макроса, так и по окончании его записи. Если вы хотите назначить комбинацию клавиш в процессе создания макроса, то после выполнения команды Сервис > Макрос > Начать запись в секции Сочетание клавиш диалогового окна Запись макроса введите нужную букву в поле Ctrl+. Если вы не назначили комбинацию клавиш в процессе создания макроса, то можете это сделать в любое время. Например, чтобы назначить комбинацию клавиш макросу БольшойШрифт, созданному в 1-м часе, выполните такие действия.

  1. Откройте рабочую книгу Час1, если она еще не открыта.

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

  1. Выполните команду Сервис > Макрос > Макросы. Появится диалоговое окно Макрос.
  2. В списке макросов выделите макрос БольшойШрифт и щелкните на кнопке Параметры. Откроется диалоговое окно Параметры макроса (рис. 2.1).

Рис. 2.1. С помощью этого диалогового окна можно назначить макросу комбинацию клавиш

  1. Для задания комбинации клавиш в поле Ctrl+ введите букву, например b.

Хотя формально нет никаких ограничений на использование в комбинациях клавиш русских букв, рекомендуем назначать буквы при установленной английской раскладке клавиатуры, так как комбинации клавиш с русскими буквами не всегда срабатывают. - Прим. ред.

  1. Щелкните на кнопке ОК. Закройте диалоговое окно Макрос.
  2. В ячейку A3 введите слово Тест.
  3. Выделите ячейку A3 и нажмите комбинацию клавиш <Ctrl+B>.

Если вы хорошо знакомы с комбинациями клавиш, назначенных в Excel по умолчанию, то знаете, что комбинация <Ctrl+B> применяет к содержимому выделенных ячеек полужирное начертание. В нашем случае эта комбинация клавиш назначена исполняемому макросу, поэтому изменено встроенное в Excel назначение этой комбинации. Такая замена будет действовать, пока открыта данная книга. Отметим, что Excel не мешает такому переназначению клавиш и даже не предупреждает об этом. По-видимому, Excel предполагает, что вы знаете, что "творите"!

Где хранить макросы

При создании своих первых макросов вы скорее всего соглашались с тем местом хранения макросов, которое предлагает Excel по умолчанию. Но вообще-то Excel предлагает три места сохранения макросов:

  • текущая открытая рабочая книга,
  • новая рабочая книга,
  • личная книга макросов.

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

Создание личной книги макросов

Личная книга макросов - специальная скрытая рабочая книга, предназначенная для хранения макросов. При первом сохранении макросов в личной книге макросов создается новый файл с названием PERSONAL.XLS. После создания этого файла он автоматически открывается при каждой загрузке программы Excel. Так как личная книга постоянно открыта, то все макросы, сохраненные в ней, всегда доступны. Отсюда следует простой вывод - если вы хотите, чтобы какой-либо макрос был доступен во всех рабочих книгах, сохраните его в личной книге макросов.

Личная книга макросов - специальная скрытая рабочая книга, предназначенная для хранения макросов. При первом сохранении макросов в личной книге создается новый файл с названием PERSONAL.XLS. После создания этого файла он автоматически открывается при каждой загрузке программы Excel. Так как личная книга постоянно открыта, то все макросы, сохраненные в ней, всегда доступны. Отсюда следует простой вывод - если вы хотите, чтобы какой-либо макрос был доступен во всех рабочих книгах, сохраните его в личной книге макросов.

Личная книга макросов находится на жестком диске компьютера в папке C:\Windows\Application Data\Microsoft\Excel\XLStart.

Сохранение макросов в личной книге макросов

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

  1. Выберите команду Сервис > Макрос > Начать запись. Появится диалоговое окно Запись макроса.
  2. Введите имя макроса, например ФорматТекст.
  3. В раскрывающемся списке Сохранить в выберите опцию Личная книга макросов.
  4. Щелкните на кнопке ОК. Вы перешли в режим записи.
  5. Щелкните на кнопке Курсив панели инструментов форматирования. Если вы впервые сохраняете макрос в личной книге, то на несколько секунд указатель мыши примет вид песочных часов - происходит создание личной книги макросов.
  6. Щелкните на кнопке Полужирный панели инструментов форматирования.
  7. Остановите запись макроса.

Выполнение макросов из личной книги макросов

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

  1. Закройте все рабочие книги. (Это необходимо для того, чтобы удостовериться в том, что макрос сохранен именно в личной книге макросов.)

Рис. 2.2. Макрос, сохраненный в личной книге макросов, можно использовать в любой рабочей книге

  1. Откройте новую рабочую книгу.
  2. В ячейке А1 введите любой текст.
  3. Поместите табличный курсор на ячейку А1.
  4. Выполните команду Сервис > Макрос > Макросы. Откроется диалоговое окно Макрос, в котором наш макрос будет представлен как PERSONAL.XLS!ФорматТекст (рис. 2.2).
  5. Выделите макрос ФорматТекст и щелкните на кнопке Выполнить.

Редактирование макросов в личной книге макросов

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

  1. Выполните команду Окно > Отобразить. Появится диалоговое окно Вывод на экран скрытого окна книги (рис. 2.3).

Рис. 2.3. Отображение скрытого окна личной книги макросов - первый шаг в редактировании ее макросов

  1. В диалоговом окне Вывод на экран скрытого окна книги выделите Personal.xls и щелкните на кнопке ОК. Отобразится окно личной книги макросов, ничем не отличающееся от окна обычной рабочей книги. Обратите внимание на строку заголовка окна, где должно присутствовать слово Personal.
  2. Выполните команду Сервис > Макрос > Макросы. Появится диалоговое окно Макрос.
  3. Выделите макрос ФорматТекст и щелкните на кнопке Изменить. Если вы попытаетесь редактировать макрос, не открывая личную книгу макросов, то появится окно с предупреждением о том, что невозможно изменить макрос в скрытой книге.
  4. Сделайте необходимые изменения в макросе и закройте окно редактора Visual Basic.

Удаление макросов из личной книги макросов

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

  1. Выполните команду Сервис > Макрос > Макросы. Появится диалоговое окно Макрос.
  2. Выделите макрос, подлежащий удалению, и щелкните на кнопке Удалить.
  3. Появится окно, требующее подтверждения на удаление макроса. Щелкните на кнопке Да, и макрос будет удален.
  4. Сохраните рабочую книгу.
  5. Последнее, что вам осталось сделать - это скрыть личную книгу макросов. Для этого выполните команду Окно > Скрыть. Личная книга макросов будет скрыта.

Назначение макросов командным кнопкам

Одной из основных ваших целей как разработчика приложений должно быть создание легких в использовании интерфейсов для выполнения задач автоматизации. Самый простой путь реализации этой цели - использование командных кнопок непосредственно в рабочей книге. Вставить командную кнопку в рабочий лист можно с помощью панели инструментов Формы. Затем можно назначить ей любой макрос. После выполнения этой процедуры щелчок на вставленной командной кнопке будет вызывать на выполнение назначенный макрос.

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

  1. Откройте рабочую книгу Час1.
  2. Выполните команду Вид > Панели инструментов > Формы. На экране отобразится панель инструментов Формы, как на рис. 2.4.
  3. Щелкните на инструменте Кнопка панели инструментов Формы. Указатель мыши примет форму перекрестия.
  4. Поместите указатель мыши в то место, где хотите разместить командную кнопку, нажмите и не отпускайте левую кнопку мыши. Перетащите указатель мыши для создания прямоугольника. Прямоугольник соответствует будущему размеру и положению создаваемой командной кнопки. Придав командной кнопке нужный размер, отпустите кнопку мыши. На рабочем листе появится кнопка и одновременно откроется диалоговое окно Назначить макрос объекту (рис. 2.5), предлагающее выбрать макрос для назначения его командной кнопке.
  5. Выберите макрос БольшойШрифт и щелкните на кнопке ОК. Этот макрос будет назначен созданной кнопке.
  6. Щелкните и выделите надпись Кнопка 1 на командной кнопке. Нажмите клавишу <Delete> для удаления этой надписи.
  7. Введите текст новой надписи на кнопке, например Большой шрифт.
  8. Щелкните где-либо вне кнопки, чтобы снять с нее выделение.
  9. В ячейке А6 введите текущую дату и нажмите <Enter>.
  10. Установите табличный курсор на ячейку А6 и щелкните на командной кнопке Большой шрифт. Должен выполниться одноименный макрос.

Рис. 2.4. Панель инструментов Формы содержит различные элементы управления, которые можно использовать для автоматизации задач

Рис. 2.5. Это диалоговое окно используется для назначения макроса командной кнопке

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

Назначение макроса графическим изображениям

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

  1. Выделите ячейку рабочего листа, где будет вставлено изображение.
  2. Выполните команду Вставка > Рисунок.
  3. Выберите команду Картинки или Из файла.
  4. Выберите изображение для вставки в рабочий лист.
  5. После того как изображение будет вставлено в рабочий лист, измените его размеры, чтобы они составляли примерно 5×5 см.

Рис. 2.6. Любое графическое изображение можно использовать для выполнения макроса

  1. Щелкните правой кнопкой мыши на изображении и в открывшемся контекстном меню выберите команду Назначить макрос. Отобразится диалоговое окно Назначить макрос объекту.
  2. Выберите макрос БольшойШрифт и щелкните на кнопке ОК.
  3. Щелкните вне графического изображения, чтобы снять с него выделение.
  4. Введите число 100 в ячейку А9.
  5. Выделите ячейку А9 и щелкните на графическом изображении. Макрос БольшойШрифт должен выполниться. Рабочий лист с графической "кнопкой" показан на рис. 2.6.

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

Назначение макросов кнопкам панелей инструментов

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

  1. Выполните команду Сервис > Настройка. Появится диалоговое окно Настройка.

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

  1. Перейдите на вкладку Команды (рис. 2.7)

Рис. 2.7. Это диалоговое окно позволяет добавлять кнопки на существующие панели инструментов и создавать новые панели

  1. В списке Категории выберите пункт Макросы.
  2. В списке Команды выберите команду Настраиваемая кнопка.
  3. Перетащите команду Настраиваемая кнопка на какую-либо панель инструментов.
  4. Щелкните правой кнопкой мыши на вновь добавленной кнопке.
  5. В контекстном меню кнопки выполните команду Выбрать значок для кнопки и в открывшейся палитре значков выберите изображение, которое будет отображаться на кнопке.
  6. Снова щелкните правой кнопкой мыши на новой кнопке и выполните команду Назначить макрос. Откроется одноименное диалоговое окно.
  7. Выберите макрос БольшойШрифт и щелкните на кнопке ОК.
  8. Щелкните на кнопке Закрыть диалогового окна Настройка.
  9. В ячейку А11 введите число 200.
  10. Выделите ячейку А11 и щелкните на новой кнопке. Макрос БольшойШрифт должен выполниться.

Резюме

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

Вопросы и ответы

Вопрос. В чем может помочь изучение макросов разработчику приложений для Excel?

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

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

Ответ. Да, для этого достаточно воспользоваться техникой назначения, описанной в этом часе.

Практикум

С помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении.

Тесты

  1. Истинно или ложно следующее утверждение: комбинации клавиш можно назначать макросам только в процессе записи макросов?
  2. Назовите три местоположения, где можно сохранить создаваемый макрос.
  3. В какой папке на жестком диске компьютера хранится личная книга макросов?
  4. Истинно или ложно следующее утверждение: личная книга макросов автоматически открывается при загрузке программы Excel?
  5. Истинно или ложно следующее утверждение: Excel не позволяет назначать макросам уже используемые комбинации клавиш?
  6. Какова последовательность действий при назначении макроса графическому изображению?

Упражнение

Назначьте макрос Заголовок, созданный в качестве упражнения 1-го часа, командной кнопке, графическому изображению и кнопке панели инструментов.

[an error occurred while processing this directive]