Excel Analysis Blog
BETA
Придется немного поработать


Макросы. Урок первый

Настройка Excel

Прежде чем приступить к работе, нужно обязательно провести первую настройку. По умолчанию, Excel блокирует все макросы, которые написаны не сотрудниками Майкрософт. В любом документе Excel, заходим Файл > Параметры > Центр управления безопасностью > Параметры центра управления безопасностью > Параметры макросов Здесь выбираем пункт Включить все макросы. Отключен он изначально из-за опасений макровирусов. Но они уже давно не актуальны, действовали только в начале 90-х и сейчас вы вряд ли найдете хакера, который будет заражать компьютеры столь примитивным способом. После этого нужно полностью переоткрыть Excel. ВАЖНО, закрыть не один документ, а ВСЕ документы Excel. Данный параметр сохранится навсегда. Далее, нужно отобразить панель Разработчика. Для этого идем Файл > Параметры > Настройка ленты. Здесь увидите все пункты меню. Скорее всего у вас не будет стоять галочка напротив Разработчик. Ставим, видим, что такое поле в ленте теперь появилось. Теперь просьба создать новый пустой документ, с которым начнем работать.

Макроредактор

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

  1. На вкладке Разработчик есть иконка Visual Basic

  2. Нажать комбинацию клавиш Alt+F11. Я предпочитаю второй вариант.

Лично у меня данное окно выглядит вот так

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

  1. Для листа
  2. Для документа
  3. Для всего Excel.

Мы с вами в основном будет писать макросы для документа, поскольку это требуется в 90% случаев.Далее.Вы видите, что рядом с каждым проектом стоит плюсик. Нажимаем его, вам открывается список.

Здесь идет описание набора, из чего собственно и состоит сам документ. Лист1 — лист, который есть в документе. Соответственно, если лист переименуете, то название измениться и в Макрорекодере. Если у вас в документе будет несколько листов, то и здесь будет создано столько же. ЭтаКнига — это модуль, в котором можно описывать макросы, которые должны срабатывать, при определенных условиях. Т.е. по стандарту, мы всегда создаем какую-то кнопку, на нажатие которой будет проходить команда. Здесь же речь идет про событие. Например, При открытии книги, выведи мне приветствие. Этого модуля пока касаться не будем. Макросы вы можете писать в любом месте. Например, можно двойным кликом щелкнуть по модули Лист1 и у вас откроется сам редактор, в котором можно начинать писать. Но здесь важно понимать, что такой код будет работать только на этом листе. Мы же пишем более универсальные программы, не так ведь? Плюс также, если вы вдруг удалите лист, то удаляться и все макросы, который в него были втроены. Поэтому чаще всего, для своих макросов создается свой модуль. Сделать это можно следующим образом. В меню, сверху слева можете найти такой значок

Нажимаем по правой стрелочке,открывается меню

Выбираем Module. Видим как он создался в структуре документа.

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

Первый макрос

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

  1. Не делайте названия такими, который использует сам майкрософт. Т.е. не стоит называть макрос Delete, потому что у нас есть такая клавиша. В случае, если имя не будет подходить, то макрос будет выдать ошибку. Уж если очень хочется, то добавляйте перед словом приставку My. MyDelete.
  2. Не делайте русские названия. Пишите строго латиницей. Макросы работать будут. Но рано или поздно наткнетесь на ситуацию, когда при вызове процедуры будет происходить всякая ерунда. А среди ошибок, вам будут выдаваться вот такие фразы: «?????????????????????». Все из-за того, что в макрорекодер есть проблемы с русскими шрифтами. А последний патч на vba накатывали в 1998 году. Так что лучше не рискуйте.
  3. Не делайте пробелов в названии. Вот тут можно быть спокойным, потому что в ином случае макрос попросту работать не будет. Как и все программисты, заменяем пробелы нижним подчеркиванием. My_delete. My delete.

Завершается название знаком закрывающихся скобок. Пока не будет вдаваться в подробности зачем. В итоге, в названии вам нужно прописать примерно следующее Sub My_first_macros(). Жмем Enter и редактор сам вам автоматически закроет процедуру фразой End Sub. Про нее не забываем, любой макрос должен заканчиваться это фразой. Сам код будет писать между ними. Касательно регистра букв, то он не важен. Если напишите слово Sub с маленькой буквы, то редактор подправит это сам. По стандарту обучения программирования, мы поприветствуем мир ))). Для это используется оператор Msgbox. Он вызывает окно сообщений. В кавычках указываете какой текст. Без кавычек нельзя. Пишем код

Sub My_first_macros()
    MsgBox "Привет мир"
End Sub

Для его запуска можно воспользоваться тремя способами:

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

Заметьте, что если я оставлю просто пустые кавычки, то сообщение появится все-равно.

ВАЖНО! Писать можно все, что угодно, там есть какое-то ограничение на количество символов. Точно не помню, но писать можно много, но вот Евгения Онегина скопировать не удастся. Все, что пишется в кавычках можно писать на любом языке. Тут у вас проблем не будет. Касательно, того, что операцию MsgBox я написал с отступом. Это не обязательно. И он тут никакой роли не играет. Просто в будущем, в больших кодах, отступы очень помогут вам не запутаться в своем макросе.

Скачать примеры урока