Тема 1. ВВЕДЕНИЕ В МАКРОСЫ EXCEL

1.  Создание и запуск макроса.

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

Макрос – это список инструкций, которые Excel может выполнять автоматически. Таким образом, макрос – это вид VBA-программы, а VBA (Visual Basic for Application)– встроенный язык программирования Excel

Существует два способа создания макроса:

Ø Использовать встроенный макрорекордер, который наподобие магнитофона записывает все выполняемые пользователем действия для последующего их воспроизведения. При помощи макрорекордера пользователь может создавать макросы без знания языка VBA

Ø Написать макрос может сам пользователь на языке программирования

Макрорекордер – это встроенный в Excel инструмент, который может отслеживать выполнение пользователем задачи, то есть, записывать макросы, и после этого автоматически повторять те же шаги.


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

1. Открыть Microsoft Excel и сохранить свою книгу под именем Макрос.xls в папке своей группы.

2. В среде Microsoft Excel выберите Сервис -> Макрос -> Начать запись.

3. В поле Имя макроса введите его имя, соответствующее вашей фамилии ( Моё_имя ).

4. В поле Сохранить в ... выберите Эта книга.

5. Щёлкните на кнопке ОК. На экране должна появиться панель инструментов Остановить запись с кнопкой "Остановить запись" следующего вида:

Панель <Остановить запись>

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

    Ø В ячейку А2 введите свою фамилию, а в ячейку под ней – своё имя.

    Ø Выделите обе ячейки и оформите их рамкой при помощи кнопки Границы панели инструментов.

    Ø Поменяйте шрифт на курсив.

    Ø Измените ширину столбца, чтобы он соответствовал размеру текста.

7. Щёлкните на кнопке "Остановить запись".

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

Для этого необходимо выполнить следующие действия:

1. Перейдите на новый рабочий лист вашей книги.

2. Выберите Сервис -> Макрос -> Макросы. Должно появиться диалоговое окно, где в списке макросов выделите сформированный ранее макрос с именем Моё_имя.

3. Нажмите кнопку "Выполнить".

Панель <Макрос>


2.  Использование относительных ссылок. Назначение горячей клавиши.

Сформированный ранее макрос Моё_имя заносит имя и фамилию в ячейки А2:А3, независимо от того, какая ячейка была выделена во время запуска этого макроса. Но может возникнуть необходимость в макросе, который записывает информацию в активную (текущую) ячейку.
В качестве примера создадим макрос, который будет заносить в активную ячейку сегодняшнюю дату. Для этого выполните следующие действия:

1. Выберите Сервис -> Макрос -> Начать запись и в поле Имя макроса введите Сегодня.

2. Назначьте макросу комбинацию клавиш, при одновременном нажатии которых будет запускаться этот макрос. Для этого в поле Сочетание клавиш установите курсор и нажмите одновременно Ctrl+Shift+L

3. На панели инструментов Остановить запись активизируйте кнопку "Относительные ссылки".

4. Выделите какую-нибудь свободную ячейку, выполните Вставка -> Функция и из списка функций выберите Сегодня.

5. Увеличьте ширину столбца, чтобы дата полностью поместилась в ячейке.

6. Щёлкните на кнопке "Остановить запись".

7. Поставьте курсор в какую-либо другую ячейку и запустите макрос Сегодня нажатием Ctrl+Shift+L. Убедитесь, что дата появилась именно в текущей ячейке.

3.  Просмотр и редактирование модулей.

В состав рабочей книги Excel наряду с рабочими листами входят и модульные листы ( модули ). Эти листы содержат набор инструкций на VBA, то есть, состоят из текстовой информации. Когда пользователь создаёт макрос при помощи макрорекордера, то при этом автоматически генерируется модуль, содержащий код (т.е. команды, операторы и объявления) макроса на языке VBA

Для того, чтобы просмотреть содержимое модуля, необходимо:

1. Выполните Сервис -> Макрос -> Макросы.

2. Из списка макросов выберите макрос с именем Моё_Имя и щёлкните по кнопке "Войти".

Среда программирования Microsoft Visual Basic

3. Прочтите код макроса и постарайтесь догадаться о назначении каждой инструкции (строки) макроса.

4. Поочередно устанавливайте курсор на каждую инструкцию макроса и нажимайте клавишу F1 на клавиатуре. Среда Microsoft Visual Basic будет открывать Вам справку (Help) по отмеченной инструкции VBA.

Среда программирования Microsoft Visual Basic

5. Измените в коде макросе текстовые константы, соответствующие фамилии и имени на другие значения

6. Из среды Microsoft Visual Basic вернитесь в Microsoft Excel, выполнив File -> Close and Return to Microsoft Excel.

7. Запустите в Microsoft Excel макрос с именем Моё_имя и проанализируйте его работу.

8. Войдите в среду Microsoft Visual Basic, выбрав Сервис -> Макрос -> Редактор Visual Basic или нажав на клавиатуре комбинацию клавиш Alt+F11, и изучите доступные панели инструментов и меню.

9. Повторите п.5 - п.7, изменив другие константы макроса Моё_Имя.

4.  Добавление модулей и запись в них макросов.

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

Создайте новый модуль и макрос в нем. Для этого:

1. Войдите в среду Microsoft Visual Basic.

2. Выполните Insert -> Module, при этом в окне "Project - VBAProject" список объектов Вашей рабочей книги должен пополниться еще одним объектом класса Modules.

3. Введите в текст модуля три новых текстовых строки:

Sub MyProgram()
    ActiveCell.Formula="Hello, world!"
End Sub

- Слово Sub указывает, что это процедура – тип подпрограммы на языке VBA. В скобках после имени процедуры может быть список передаваемых параметров. Если список пуст, то такая процедура – макрос, и он может быть запущен из меню Сервис рабочего листа.
- Слово MyProgram – это имя макроса, которое надо выбрать для запуска макроса в рабочем листе.
- При выполнении макроса MyProgram в активной ячейке рабочего листа должен появиться текст Hello world!

4. Для запуска макроса MyProgram выполните возврат в MS Excel (File ->Close and Return to Microsoft Excel), а затем выберите Сервис -> Макрос -> Макросы -> MyProgram и нажмите кнопку "Выполнить".

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

Добавьте в макрос MyProgram комментарии. Для этого:

1. В строку после заголовка введите любой текст, например, 'программа-приветствие.

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

3. Запустите макрос на выполнение.

5. Написание функций, определённых пользователем.

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

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

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

1. Войдите в Редактор Visual Basic

2. Установите курсор в конце какого-нибудь модульного листа и введите текст:

Function Гипотенуза(Катет1,Катет2)
    Гипотенуза =sqr(Катет1^2+Катет2^2)
End Function

    Стандартная функция Sqr(аргумент) возвращает значение квадратного корня.

3. Вернитесь в Microsoft Excel ( File -> Close and Return to Microsoft Excel ).

4. Наберите в свободном месте рабочего листа в одной ячейке любое число, в соседней слева – ещё одно, передвиньте курсор ещё на ячейку влево, куда будет вставлена наша функции.

5. Выберите Вставка -> Функция , а затем в списке Категория выберите опцию Определённые пользователем. После этого надо в списке Выберите функцию выделить функцию Гипотенуза и нажать ОК.

6. Появляется диалоговое окно, которое необходимо заполнить: переменной Катет1 присвойте адрес ячейки с первым числом, а переменной Катет2 – адрес ячейки со вторым числом, и нажмите OK.

6. Дополнительное задание.

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

Следует отметить, что запуск макросов возможен и непосредственно из среды Microsoft Visual Basic. Для этого необходимо курсор установить в область запускаемого макроса и выбрать Run -> Run Sub/UserForm или нажать клавишу F5.

Программа №1

Sub hy()
    user = InputBox("Who are you?")
    If user = "Sam" Then
        MsgBox "Hy, Sam!"
    End If
    L = 5
    For n = 1 To L
        MsgBox "n=" & n
    Next n
End Sub

Программа №2

Sub Name()
    User = "Jerry"
    Do While User <> "Tom"
        User = InputBox("Как ваше имя?")
    Loop
    n = InputBox("Введите n ")
    If n > 0 Then
        MsgBox "n>0"
    Else
        MsgBox "n<=0"
    End If
    Select Case n
        Case 1 To 5
            MsgBox "Между 1 и 5"
        Case 6, 7, 8, 9, 10
            MsgBox "Между 6 и 10"
        Case Else
            MsgBox "Вне отрезка [1, 10]"
    End Select
End Sub

7. Задание на самостоятельную работу.

Иcпользуя справку VBA, Интернет или учебную литературу, изучите, законспектируйте и запомните, как работают операторы:

1) Select Case
    Case
    Case Else
End Select
2) If ... Then
Else
End If
3) Do While
...
Loop
4) For ... To ... Step
...
Next

Приведите примеры программ с иcпользованием данных операторов.

Русскоязычные ресурсы Интернет по VBA:

http://www.msoffice.nm.ru/vba/ ,    http://www.msoffice.nm.ru/vba/cycling.htm
http://www.realcoding.net/teach/outlook/4/Index12.htm ,    http://www.realcoding.net/teach/outlook/4/Index15.htm
http://vtit.kuzstu.ru/books/shelf/book3/sod/SOD.html ,    http://www.lessons-tva.info/edu/e-inf2/m2t3_7.html