Не секрет, что многие на работе по роду своей деятельности (или со вводом новых технологий и принципов учета и отчетов) сталкиваются с такой офисной программой как MS Excel.
Мы сталкиваемся со множеством таблиц, в которые необходимо вводить данные, строить другие таблицы на основе других, копировать данные из одной таблицы в другую. Знакомо? Уходит колоссальное количество времени для того, чтобы сформировать отчет, если в одной таблице 900+ строк и нужно сделать другую таблицу на основе это. В идеале, хочется нажать кнопку и, вуаля!, готов отчет. На практике, как вам кажется, это могут сделать только опытные гуру. Спешу вас разубедить. это может сделать каждый. Для этого нужно 3 вещи: 1 - желание, 2 - понимание, как устроены таблицы и 3 - основы логики. Именно логики, т.к. на логике основано любое программирование.
Немного отступлю от темы и коротко о программировании. По сути, программирование, как и наша вся жизнь, построена на логическом выборе:
Приведу пример из жизни, основываясь на эту схему: Условие: на улице идет дождь. дойти до машины сухим. 1. Надо взять зонт. Можем выполнить это условие? - да. Берем и идем, 2. нет - сидим дома, ждем, когда дождь закончится.
При создании макросов (так называется программирование на VBA for Excel) используется подобная логика, за исключением тех моментов, где нужно просто занести данные в ячейку либо произвести каки-то действия с ячейкой (обвести, расширить, изменить шрифт и т.д.)
В своих статьях я хочу показать, что не так сложно написать макрос, выполняющий работу за вас, понимая, как устроен MS Excel и встроенный Visual Basic for Application.
Итак, довольно слов и теории (это вступительная статья, поэтому немного можно), поехали:
Как нам "попасть" в режим программирования? Все просто. Запускаем Excel, далее жмем "волшебную комбинацию клавиш" ALT+F11 и, вуаля, мы попадаем в (жуткое для тех кто первый раз) окно программирования на VBA
Как видим, макросы можно создавать на листе (Лист1 (Лист1)) или во всей книге (ЭтаКнига). "Тыкаем дважды" (извиняюсь за сленг, но, думаю, большинству будет понятнее) в ЭтаКнига и попробуем что-либо изобразить :)
Первым делом нам нужно придумать имя нашему новоиспеченному макросу. Можно как на русском, так и на английском, пробелы не допускаются, но можно использовать знак "_" для разделения слов. Обязательно перед именем пишем Sub(это процедура) или Function(это функция). Для первых шагов лучше писать Sub, т.е. процедура. (В чем отличие процедуры от функции я постараюсь написать в будущих статьях)
Пусть именем будет "Привет_Страна". итак пишем:
Sub Привет_Страна и жмем "Enter"
Как вы заметили, End Sub дописалась сама собой. Это редактор кода дописывает за вас код программы, чтобы избежать ошибок, но не всегда :(
Разберем подробно, что это за волшебные слова Sub....End Sub. это начало и конец нашего макроса. В нашей книге может быть много макросов, все они состоят из блоков Sub...End Sub, чтобы программа могла определять где кончается макрос и начинается новый. Все команды и условия, расположенные внутри этого блока, и будут нашим макросом.
Напишем внутри этого блока MsgBox "Привет Страна!". Перейдем в сам Excel Вкладка "Вид" - "Макросы"
Жмем "Выполнить" и увидим следующую "картинку"
Поздравляю! Ваш первый макрос готов. Сейчас большинство скажет: - Это бессмысленный макрос! Зачем это нужно?
Во-первых: Вы научились запускать редактор макросов. Во-вторых: вкратце познакомились со структурой макроса (Sub....End Sub). В-третьих: простая функция MsgBox не раз вам "спасет жизнь" на этапе отладки ваших макросов.
В дополнении хочу сказать о таких вещах, как комментарии при написании макросов. Будет считаться хорошим кодом, если вы ставите комментарий к своим командам. Это сэкономит время вам, чтоб вспомнить код и тем людям, которые будут пользоваться вашими макросами. Обозначаются они знаком " ' ". Все что после этого знака программа игнорирует и не обрабатывает.
В следующей статье я вас познакомлю с понятием "переменная", структурой ячеек MS Excel и попытаемся записать данные в ячейки с помощью макроса.