Лекция 1 Основные сведения о программировании макросов с помощью VBA для Excel

Лекция 1
Основные сведения о программировании макросов
с помощью VBA для Excel

1.Понятие о макросах и способах их создания в Excel

Для автоматизации трудоёмких или часто повторяющихся задач в Excel используют макросы. Макрос – это небольшая программа, содержащая набор команд, указывающих Excel последовательность действий, которые он должен выполнить автоматически без участия пользователя. Макрос может выполняться только в среде Excel (без участия Excel, только с помощью Windows, макросы выполняться не будут).
Есть два способа создания макроса:
В первом случае пользователь переводит Excel в специальный режим записи, после чего выполняет последовательность действий, требующих запоминания – нажимает клавиши, либо работает с лентой инструментов, или пользуется мышью. Закончив работу, пользователь останавливает запись так, как будто пользовался диктофоном, после чего присваивает выполненной последовательности действий какое-нибудь имя (имя макроса). Затем указывает компьютеру, какое сочетание клавиш или нажатие какой кнопки на ленте инструментов будет активизировать макрос. Дав макросу имя и предусмотрев способ вызова макроса на выполнение, пользователь может в дальнейшем в любой момент активизировать макрос, при этом Excel будет автоматически выполнять все те действия, которые предпринимал пользователь во время записи макроса.
Второй способ создания макроса реализуется программированием. При этом пользователь пишет на языке VBA программу, которая сохраняется в текущем документе Excel. Запрограммированный макрос можно запускать на выполнение нажатием условного сочетания клавиш, либо нажав специально предусмотренную кнопку на ленте инструментов, либо выбрав имя требуемого макроса в списке макросов. Такой способ создания макросов более труден, требует знаний программирования, но в то же время позволяет выполнять сложные вычисления и что важно, даёт возможность редактировать, изменять имеющиеся макросы применительно к решению но-вых задач.
Первый способ создания макросов очень прост, им легко овладеть само-стоятельно, поэтому мы уделим внимание исключительно программированию макросов.
2.История языка BASIC
Название языка программирования BASIC является аббревиатурой от слов Beginner’s All-purpose Symbolic Instruction Code – универсальный символический язык инструкций для начинающих. BASIC был разработан в начале 1960-х для обучения студентов программированию. С годами BASIC развивался и улучшался. В 1991 году компания Microsoft выпустила новую версию BASIC'a, получившего название Visual Basic. Этот вариант BASIC'a позволяет удобно создавать программы, выполняемые под управлением операционной системы Windows. Visual Basic послужил основой для разработки языка Visual Basic for Applications (VBA). VBA – это упрощённая разновидность Visual Basic, встроенная в каждую программу из Microsoft Office (в Word, Excel, PowerPoint, Access, OutlookExpress), а также во многие другие программные пакеты, такие как AutoCAD и CorelDRAW. VBA предназначен для программирования макросов – от простейших макросов до сложных программных комплексов, максимально раскрывающих возможности Microsoft Office.
3.Основные действия с макросом
3.1.Создание макроса
Чтобы написать макрос (в дальнейшем макросы будем называть словом «программа»), надо запустить на выполнение Excel и нажать кнопки ALT+F8 (либо выбрать в ленте инструментов Excel закладку «Вид», затем кликнуть мышью по инструменту «Макросы»). Появится диалоговое окно «Макрос» с курсором, мигающим в поле ввода «Имя макроса:». Здесь требуется ввести произвольное имя создаваемой программы.

Требования к имени программы:
• В имени допускается использовать латинские, русские буквы, цифры, знак подчёркивания "_";
• Первый символ имени должен быть буквой;
• Максимальная длина имени 255 символов;
• Нельзя использовать пробел (если требуется, чтобы имя состояло из нескольких слов, то вместо пробела надо использовать символ подчёркивания либо записывать слова слитно, при этом начиная каждое слово с заглавной буквы).
Примеры названия программы:
Моя_программа;
МояПрограмма;
MyProgram;
Program_1.

Как только пользователь введёт имя программы, в диалоговом окне «Макросы» станет доступна кнопка «Создать».

При нажатии на неё будет запущен на выполнение VBA (в дальнейшем будем для краткости называть программу Visual Basic for Applications просто Visual Basic). В одном из окон Visual Basic мы увидим начальный текст создаваемой программы:
Sub Program_1( )

End Sub
Программа создана.

3.2.Сохранение программы
Чтобы сохранить созданную программу, нажимаем CTRL+S или в закладке ленты инструментов «Файл» выбираем пункт «Сохранить» или «Сохранить как». Попытка сохранить документ Excel в файле с типом «Книга Excel», предлагаемым по умолчанию, приведёт к сбою: Excel выдаст сообщение: «Следующие компоненты невозможно сохранить в книге без поддержки макросов: Проект VB».

Это означает, что макрос нельзя сохранять на диске в обычном файле документа Excel. Файл Excel, хранящий макрос, следует записывать, выбрав тип файла «Книга Excel c поддержкой макросов».

3.3.Загрузка программы с диска и запуск на выполнение
Созданный ранее файл документа Excel с записанной в него программой можно в дальнейшем загружать как обычную книгу Excel (CTRL+O или за-кладка «Файл», подпункт «Открыть»).
Для запуска на выполнение только что написанной (или загруженной с диска) программы вызываем диалоговое окно «Макросы». Для этого нажимаем ALT+F8 или закладку «Вид», кнопка «Макросы». В окне «Макросы» кликаем по имени программы (в нашем примере она называется Program_1) и нажимаем кнопку «Выполнить».

Здесь нас ждёт неудача – Excel воспротивится запуску макроса и сообщит, что система безопасности отключила макросы.

Этот казус объясняется тем, что макросы потенциально опасны для компьютера как источник заражения вирусами. Существует такая разновидность вирусов, называемая «макровирусы», которые распространяются путём выполнения макросов. Чтобы получить возможность запустить на выполнение созданный пользователем макрос, надо настроить соответствующим образом систему безопасности Excel.
Для настройки системы безопасности надо кликнуть по закладке «Файл», в открывшемся списке выбрать пункт «Параметры».

На экране появится окно «Параметры Excel», в котором надо выбрать группу параметров «Центр управления безопасностью». В центре управления безопасностью следует кликнуть по кнопке «Параметры центра управления безопасностью».

Далее в группе радиокнопок «Параметры макросов» следует включить кнопку «Включить все макросы (не рекомендуется, возможен запуск опасной программы)». Затем нажимаем кнопку «ОК» в нижнем углу окна.
После проделанных манипуляций следует заново запустить Excel, загрузить книгу с макросом, нажать ALT+F8, выбрать в списке имя макроса и нажать кнопку «Выполнить».

4.Диалоговые окна Visual Basic
Диалоговые окна используются в программе для ввода или вывода информации. В VBA существуют три способа ввода-вывода информации:
• с помощью диалоговых окон;
• с помощью компонентов экранных форм;
• через ячейки таблицы Excel.
Мы будем пользоваться только диалоговыми окнами, как самым простым способом.
Вывод информации на экран
Для вывода на экран компьютера какого-нибудь текстового сообщения или результатов расчёта, необходимо воспользоваться диалоговым окном Message Box (окно сообщений), которое в программе вызывается командой MsgBox.
В общем виде команда записывается так: MsgBox «Текстовая строка».
При выполнении этой команды на экране появляется диалоговое окно, в котором выдаётся надпись, указанная в команде. Текст надписи обязательно должен быть в кавычках, другие символы не годятся. Сами кавычки при выполнении команды на экран не выводятся. Кроме надписи, в окне присутствует кнопка «ОК». Выполняя команду MsgBox, компьютер «зависает», т.е. делает паузу, позволяющую пользователю не спеша прочитать надпись. Чтобы закончить паузу и продолжить выполнение программы, пользователь должен нажать в окне кнопку «ОК».
Пример текста программы, использующей команду MsgBox:
Sub Program_1( )
MsgBox «Это моя первая программа»
End Sub
В результате выполнения программы на экране появится такое окно:

Если выводимый на экран текст получается длинным, его можно разбить на несколько строк, соединённых знаками суммы (+) и специальным словом vbCrLf:

Sub Program_1( )
MsgBox «Это моя первая программа»+vbCrLf+«и она мне нравится!»
End Sub

В результате имеем две строки текста:

Ввод информации в программу с клавиатуры
При выполнении программ обычно приходится вводить в программу исходные данные – числа, символы, слова и прочее. Простейшим способом это можно сделать командой InputBox, что переводится как «Окно ввода». В общем виде эта команда записывается так:
A=InputBox(«Сообщение»,«Заголовок»,«Стандартный ответ»)
При выполнении этой команды на экране появится диалоговое окно, в котором имеется поле ввода, предназначенное для впечатывания в него информации с клавиатуры.
Команда InputBox имеет три аргумента (в круглых скобках после слова InputBox записаны при текстовых строки, разделённых запятыми): «Сообще-ние», «Заголовок» и «Стандартный ответ». Назначение этих аргументов сле-дующее:
«Сообщение» – это произвольная фраза, высвечиваемая в диалоговом окне InputBox и подсказывающая пользователю, какие данные от него требуется ввести с клавиатуры;
«Заголовок» – это произвольная фраза, которая будет выведена в верхней части окна, т.е. в заголовке окна.
«Стандартный ответ» – это информация, которая будет высвечиваться в поле ввода диалогового окна InputBox и являющаяся предлагаемым стандартным вариантом вводимой информации, которым пользователь может воспользоваться вместо того, чтобы придумывать какой-нибудь свой вариант для ввода.
Рассмотрим пример использования команды InputBox:
Sub Program_1( )
A=InputBox(«Укажите ваше имя»,«Ввод данных»,«Петя»)
End Sub
В результате выполнения этой программы на экране появится такое диалоговое окно:

При выполнении команды InputBox, программа «зависает» и ждёт действий пользователя. Пользователь должен впечатать в поле ввода любое желаемое значение вместо предлагаемого стандартного значения и нажать кнопку «ОК». Либо он может не вводить своё значение и сразу нажать «ОК». Тогда в программу будет записано предусмотренное командой стандартное значение (в нашем примере – слово «Петя»). Третий вариант поведения пользователя – он сразу нажимает кнопку «Cancel». Эффект будет, как во 2-м случае.
Не надо пугаться сложности всего перечисленного, на самом деле всё может быть гораздо проще, поскольку не обязательно использовать в каманде InputBox все три параметра, часть из них можно пропустить. В минимальном варианте эта команда записывается так:
Sub Program_1( )
A = InputBox("")
End Sub
То есть, мы отбросили «Заголовок» и «Стандартное значение», а вместо «Сообщения» записали пустые кавычки, то есть двое кавычек, записанных подряд, без текста между ними. Вот что получилось на экране:

Видно, что «Сообщение» и «Стандартное значение» отсутствуют, а вместо «Заголовка» высвечивается «Microsoft Excel».
Бесспорно, «краткость – сестра таланта», но такой минимализм может сбить с толку пользователя, которому будет непонятно, что от него хочет программист в этом месте программы, какие сведения он должен ввести в этом диалоговом окне. Поэтому желательно всё-таки дать пользователю какую-нибудь подсказку, либо с помощью «Сообщения», либо в «Заголовке»:
Sub Program_1( )
A = InputBox(«Укажите ваше имя»)
End Sub

или:

Sub Program_1( )
A = InputBox("",«Укажите ваше имя»)
End Sub
В результате получаем соответственно:

или во втором варианте –

Заметим, что во 2-м варианте нами в команде InputBox использовался только второй аргумент – «Заголовок», а предшествующий аргумент, «Сообщение», был не нужен. Но правила записи команды InputBox таковы, что просто отбрасывать можно лишь те аргументы, которые стоят справа от указываемого. Если в InputBox требуется избавиться от аргумента, стоящего слева (в данном примере – от аргумента «Сообщение»), его всё равно придётся записать, хотя и в виде так называемой «пустой строки», т.е. в виде кавычек, записанных подряд, без текста между ними: A = InputBox("",«Укажите ваше имя»).
Знакомясь с командой InputBox, остаётся выяснить – что означает буква «А» и знак равенства слева от этой команды. Эти два символа позволяют программе запомнить то значение, которое вводит пользователь с клавиатуры. Такое действие называется «запомнить вводимое значение в переменной „А“. После запоминания в переменной, введенное с клавиатуры в InputBox значение может использоваться в программе неограниченное количество раз, пока не закончится программа. При этом упоминание в тексте программы имени переменной „А“ означает извлечение из памяти и использование в указанном месте содержимого переменной.
В качестве примера использования переменной, составим программу, по-зволяющую вводить имя с клавиатуры и тут же выводить его на экран (не будем обсуждать полезность такой программы):
Sub Program_1( )
A = InputBox(»", «Как вас зовут?»)
MsgBox «Ну, здравствуй, » + A
End Sub

Введём с клавиатуры в InputBox слово «Вася» и нажмём «ОК». Получим:

Анализируя текст программы, обращаем внимание на то, что в диалоговом окне MsgBox выводимое на экран сообщение представляет собой две текстовые строки, сцепленные воедино знаком плюс (+). Однако вторая строка не заключена в кавычки и состоит только из одной буквы (А). В данном случае вместо текстовой строки, задаваемой в явном виде, например «Вася», в программе подставляется переменная по имени «А», в которую ранее в программе было записано командой InputBox вводимое с клавиатуры произвольное слово – любое имя, по желанию пользователя. Выгода от использования в программе переменной заключается в том, что программа стала универсальной, пригодной для любого вводимого пользователем имени (для любых исходных данных).
Запишем более сложный текст программы:
Sub Program_1( )
A = InputBox("", «Как вас зовут?», «Петя»)
B = InputBox("", «Ваша фамилия?», «Петров»)
C = InputBox("", «Где учитесь?», «ДВГУПС»)
MsgBox «ЗНАКОМЬТЕСЬ:» + vbCrLf+ _
«это „+A+“ „+B+“ ,»+ vbCrLf+ _
«он (она) учится в „+C
End Sub

Из текста программы видно, что три раза подряд вызывается окно InputBox, первый раз – для ввода с клавиатуры имени, второй раз – для ввода фамилии, третий раз – для ввода названия ВУЗа. Каждый раз вводимое слово записывается в новую переменную: имя- в переменную “А», фамилия – в переменную «В», название ВУЗа – в переменную «С». Затем все три слова соединяются в единую строку знаками плюс (+), а полученная строка выводится на экран командой MsgBox. Предположим, что пользователь, запустив программу, указал имя – «Федя», фамилию – «Фёдоров», а название ВУЗа взял как стандартное значение – «ДВГУПС», нажав в третьем окне InputBox кнопку «ОК» сразу, не меняя предлагаемого программой слова. Результат работы таков:

Поясним некоторые странности, использованные в тексте команды MsgBox. Выводимое этой командой на экран сообщение получилось длинное, поэтому его пришлось разбить на три строки, для этого использовались уже знакомые нам команды vbCrLf. Далее, между переменными А и В вставлены пробелы в кавычках. Эти пробелы необходимы, чтобы имя и фамилия, хранящиеся в этих переменных, при выводе на экран не слились зрительно в одну строку: «ФедяФёдоров». Это будет некрасиво. Далее, после переменной В (после фамилии) в формируемую текстовую строку вставляется пробел с запятой (оба символа в кавычках). И ещё одно новшество: команда MsgBox получилась очень длинной, она превышает ширину страницы текстового редактора Visual Basic, поэтому мы её принудительно разбили на три строки, каждый раз записывая в конце строки (за исключением самой последней строки) символы «пробел» и «знак подчёркивания». Эти два символа, записанные вместе подряд, указывают компьютеру, что следующая строка содержит продолжение текущей команды. Итак, пробел со знаком подчёркивания позволяют для удобства чтения программы разбивать длинную команду на несколько строк.

403
RSS
Нет комментариев. Ваш будет первым!
Загрузка...
Этот сайт использует файлы cookies, чтобы облегчить вам пользование нашим веб-сайтом. Продолжая использовать этот веб-сайт, вы даете согласие на использование файлов cookies. Подробнее о том, как мы пользуемся файлами cookies и как ими управлять, вы можете узнать нажав на ссылку ниже.