Код программ написанных на VBA в Excel (макросы), хранится в модулях.
Создание модуля
Давайте создадим новый модуль. Для этого в открытой книге Excel нажмем сочетание клавиш Alt+F11. Откроется редактор VB. Теперь убедитесь, что у вас в редакторе отображается дерево проекта.
Открыть project explorer (дерево проекта) можно из меню View->Project explorer или с помощью сочетания горячих клавиш Ctrl+R.
Чтобы добавить новый модуль, нужно кликнуть правой кнопкой мыши по любому элементу проекта. Затем, выбрать в открывшемся меню Insert-Module (Вставка-Модуль). Под проектом здесь понимается книга Excel. Если одновременно открыть несколько книг Excel, то все они будут отображаться в дереве проектов.
Имя модуля
По умолчанию, имя модуля имеет вид Module + порядковый номер модуля. Например, Module1.
Если вы хотите задать другое имя модулю, нужно зайти в его "свойства". В редакторе VB есть отдельное окно свойств Properties , где можно просмотреть/изменить свойства любого объекта в проекте.
Открыть Properties Window (окно свойств) можно из меню View->Properties Window или нажав на клавишу F4.
Когда окно свойств открыто, выделите тот объект, свойства которого необходимо увидеть. Мы хотим изменить имя Module1, поэтому выбираем этот объект. В поле name прописываем новое имя. Пусть это будет Macros.
Удаление модуля
Для удаления модуля - кликнуть правой кнопкой мыши по нему и выбрать Remove+имя модуля. Перед удалением появится диалоговое окно с вопросом:
Do you want to export Module before removing it?
Это предложение экспортировать модуль перед удалением. Если вы хотите сохранить модуль отдельным файлом, то нажмите "Да", если этот модуль вам больше не нужен, то нажмите "Нет".
Создание макроса
Макрос можно создать разными способами: использовать макрорекордер, который сам записывает последовательность ваших действий в Excel, а можно создавать макросы вручную либо комбинировать оба этих способа. Пока мы остановимся на втором способе, т.к. макросы полученные первым способом практически всегда необходимо дорабатывать вручную.
Итак, дважды кликнем по модулю, в котором мы хотим написать макрос, чтобы открылось окно кода этого конкретного модуля. В отличии от окна свойств, которое одно для всех объектов проекта (в него подставляются свойства того объекта, который выбран сейчас), окно кода для каждого объекта свое.
Так как мы создали новый модуль - окно кода его будет пустым.
Запишите в него следующий код:
Sub macros()
MsgBox "Привет, голос!"
End Sub
Для запуска макроса установите курсор на код макроса и нажмите F5.
Если курсор не установить и нажать F5, макрос тоже запустится, но сначала будет предложено выбрать какой именно макрос нужно запустить. В списке макросов выбираем нужный и жмем Run.
Так же можно запустить используя меню Run->Run
В результате появится сообщение
Привет, голос!
В следующем уроке мы подробнее разберем структуру программ VBA и разберемся в различии процедур и функций.
Подписываюсь, давно хотел выучить VBA. Дико нужен будет для работы с Excel и AutoCAD.
Спасибо! Будут вопросы - задавайте!
Здравствуйте! Спасибо за столь полезные материалы. Подскажите, можно ли уже задавать вопросы по конкретным случаям или пока еще рано?
Пишите, какие вопросы есть?)
На мой взгляд вопрос непростой. Таблица состоит из выстроенных один за другим одинаковых блоков формул, в соответствии с количеством поставщиков (по 1 блоку на 1 поставщика). Хотелось бы иметь один этот типовой блок на отдельном листе, и макросом вставлять в ряд столько блоков подряд, сколько в наличии поставщиков, корректно отображая при этом ссылки в формулах этого блока
Можете пример вашего файла показать? Или ссылку на файлообменник или на почту [email protected] выслать. Данные можете забить выдуманные, главное формулы, чтобы были какие нужны. Сделаю разбор решения на его основе, либо если хотите можете заказать готовый макрос за оплату (принимаются и золотые))
прилагаю ссылку на файл в гугл доках https://drive.google.com/open?id=0B45x6EHhXrIfZThLOW5iSHRZQk0
На разных листах книги - блоки выделенные желтым. Они связаны ссылками. Цель планируемого действа - добиться решения, чтобы эти блоки вставлялись на каждом листе, в составе таблицы справа, путем однократного нажатия кнопки для разового добавления, либо указания количества добавлений этих блоков.
Хотелось бы разбор решения, так как думаю это часто будет использоваться в работе, и важнее само понимание, чем обладание скриптом.
тоже подписываюсь
Привет!
Этот пост был выбран Академией Голоса и попал в список программы поддержки качественных образовательных постов.
Ссылка на твой пост будет опубликована в отчете Академии.
Спасибо за полезный контент (ノ◕ヮ◕)ノ*:・゚✧