Vba excel. первая функция (для начинающих)

VBA для чайников

Эта книга поможет освоить интегрированную среду разработки VBA и научиться программировать в VBA с использование объектов, их свойств, методов и событий. Обсуждаемые приемы программирования иллюстрируются примерами, которые можно сразу же опробовать на практике. Полученные знания вы сможете применить как для настройки и усовершенствования популярный офисных приложений, включая приложения Office XP, так и для создания собственных приложений.

Книга рассчитана на тех, кто собирается быстро и без лишних усилий научиться программировать для Windows, используя VBA.

Стив Каммингс — VBA для чайников 1

Часть I Начальные сведения о VBA 2

Часть II Курс программирования на YBA 23

Часть III Практикуемся в программировании на VBA 60

Часть IV Профессиональная работа c VBA 77

Часть V Великолепные десятки 99

Оператор Like – сравнение строк по шаблону

Оператор Like предназначен для сравнения одной строки с другой по шаблону.

Синтаксис:

1 Результат=ВыражениеLikeШаблон
  • Результат – любая числовая переменная;
  • Выражение – любое выражение, возвращающее строку;
  • Шаблон – любое строковое выражение, которое может содержать знаки подстановки.

Строка, возвращенная аргументом Выражение, сравнивается со строкой, возвращенной аргументом Шаблон. Если обе строки совпадают, переменной Результат присваивается значение True, иначе – False.

1
2
3
4

myRes=»восемь»Like»семь»‘myRes = False

myRes=»восемь»Like»*семь»‘myRes = True

myRes=»Куда идет король»Like»идет»‘myRes = False

myRes=»Куда идет король»Like»*идет*»‘myRes = True

Со знаками подстановки для оператора Like вы можете ознакомиться в статье Знаки подстановки для шаблонов.

Предварительная подготовка

Требуемая подготовка:

Требуемая подготовка: Успешное окончание курса 55291AC: Microsoft Excel 2019. Уровень 2. Расширенные возможности или эквивалентная подготовка.

Рекомендуемая подготовка (необязательная): Успешное окончание курса Microsoft Excel 2019/2016. Уровень 3. Анализ и визуализация данных или эквивалентная подготовка.

Рекомендуемая подготовка (необязательная): Успешное окончание курса Microsoft Access 2019/2016. Уровень 1. Обработка и анализ информации в базах данных или эквивалентная подготовка.

Получить консультацию о необходимой предварительной подготовке по курсу Вы можете у наших менеджеров: +7 (495) 232-32-16.

Наличие предварительной подготовки является залогом Вашего успешного обучения. Предварительная подготовка указывается в виде названия других курсов Центра (Обязательная предварительная подготовка). Вам следует прочитать программу указанного курса и самостоятельно оценить, есть ли у Вас знания и опыт, эквивалентные данной программе. Если Вы обладаете знаниями менее 85-90% рекомендуемого курса, то Вы обязательно должны получить предварительную подготовку. Только после этого Вы сможете качественно обучиться на выбранном курсе.

VBA для Excel: базовый курс

Создавайте макросы и пишите программы на VBA для Excel. Даже базовые знания значительно расширят Ваши возможности использования электронных таблиц.

  • Описание
  • Комментарии
  • Дополнительно

Главная цель курса:

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

Этот курс о том:

  • Как создавать и редактировать макросы.
  • Как создавать несложные программы с нуля.
  • Как получить доступ из своей программы к объектам Excel (ячейкам, диапазонам, листам… ).
  • 32 урока, более 2 часов материала.
  • 10 бесплатных уроков
  • Курс создавали эксперты работы в программе.
  • Курс сделан очень качественно, его приятно проходить.
  • Легко воспринимается.
  • Интерактивные тренировки, где Вы можете опробовать изучаемые навыки.
  • Вы можете скачать Файлы с данными, с помощью которых мы делали этот курс.

Хотите научиться писать макросы для Microsoft Excel?

Тогда вам нужен курс для начинающих по Visual Basic для Excel от компании skill.im. Специально для тех, кто хочет решать более сложные задачи в Excel, мы подготовили интересный самоучитель, который будет полезен как начинающим, которые никогда не занимались программированием, так и людям, которые знакомы с Visual Basic, но хотят усовершенствовать свои знания.

Чем полезен базовый этап по VBA для Excel?

В целом, наш самоучитель состоит из трех разделов: продвинутый, базовый и мастерский. Базовая часть будет полезна тем людям, которые не знакомы с программирования и никогда не писали программ, то есть – для чайников. Остальные этапы удовлетворять запросы более опытных пользователей.

Базовый этап состоит из пяти разделов.

В первом вы узнаете:

• Параметры безопасности Excel и файлов

• Все о вкладке «Разработчик».

Второй шаг мы посвятили знакомству с макросами:

• Как записать и запустить макрос в Excel

• Редактирования макроса для Excel в The Visual Basic Editor

• Знакомство с Visual Basic Editor на Excel

В третьем разделе мы поговорим о процедурах и функциях

• Что такое модуль

• Создание функции для Excel

В четвертом разделе мы начнем программировать на VBA

А в пятом будем работать с объектами Excel.

Часть III. Практикуемся в программировании на VBA

Эта часть — сердце книги. Здесь, в сотворенных с любовью главах, я открою вам секреты мира VBA. Первая половина глав этой части систематизирует компоненты VBA-программы и раскрывает структуру этих компонентов, чтобы вы всегда точно знали, что и где вам следует печатать. Далее идет практикум по правильному присвоению имен в VBA и приданию презентабельного вида программному коду

Затем следуют главы, рассказывающие о работе с переменными и объектами, что очень важно при настройке таких приложений, как Word, Excel или CorelDraw. В последней главе мы поговорим о обработке данных, представленных в виде массивов и наборов

Создание макроса в программе Bloody.

Я буду показывать на примере самой популярной на данной момент программы для мышек a4tech Bloody. Для мышек a4tech X7 все делается аналогично, да и в целом, такой макрос можно сделать на любой мышке поддерживающей макросы с имитацией кликов и задержек между ними.

Шаг 1. Создаем папку с новой игрой и файл макрос.

Заходим в программу Bloody и открываем вкладку Oscar Macro.

Далее в левом верхнем меню “Файл” выбираем “Новая игра”.

В появившемся окне вводим название новой папки – Dota2 (ведь мы же делаем макрос для доты как никак).

Отлично, отдельная папка для макросов Dota2 готова, теперь нужно создать новый файл макрос в этой папке, для этого опять открываем меню “Файл” и выбираем пункт “Новый”

В появившемся окне вводим название нашего макроса и жмем “OK”, я назову его Clicker, логично же

В появившемся окне заполняете все поля как вам угодно и нажимаете “OK”. Поля “Разрешение” и “Чувствительность” оставляете без изменений, они ни на что не влияют, это просто информация о макросе.

Шаг 2. Написание скрипта.

Снова переходим в меню “Файл” и выбираем пункт “Открыть”.

Выбираем ранее созданный макрос и нажимаем кнопку “Open”.

Итак, перед вами окно нашего нового, но все еще пустого макроса, ну что же, самое время заняться созданием скрипта.

В Зоне команд перейдите во вкладку Mouse.

Теперь начинается самое интересное. Так как мы будем эмулировать нажатия правой кнопки мыши, то необходимо перенести “Правая кнопка” из зоны эмулирования в зону макроса, вообщем зажимаем мышкой и переносим, должно получиться вот так:

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

Теперь осталось установить нужную нам частоту кликов. По умолчанию программа поставила значение в 64мс, сменим его на 10мс.

Итак, давайте интерпретируем скрипт человеческим языком. У нас установлен 2й режим работы для макроса, т.е. при нажатии и удержании кнопки макрос будет работать по кругу, в начале он нажмет правую кнопку мыши и будет удерживать ее на протяжении 10мс, затем отожмет эту кнопку и через 10мс нажмет заного и будет удерживать 10мс и тд. Сохраняем наш макрос нажатием на “дискетку”.

Переходим во вкладку “Button”, выбираем наш макрос в меню правой кнопки мыши и загружаем макрос в мышь нажатием кнопки “APPLY”

Обратите внимание, что мы загружаем макрос на правую кнопку мыши, а она доступна во всех профилях режима Ultra Core 4

Волнительный момент, идем тестировать макрос в игре

https://youtube.com/watch?v=gt4VjVaikzE

В процессе игры вы можете поменять значения задержек, сделав их больше, например 20мс вместо 10мс, или меньше, но учтите при слишком маленьких значениях кликов может быть настолько много, что они не будут успевать обрабатываться в реальном времени и могут возникнуть небольшие “подвисания”, поэтому, если такое произошло, просто чуть чуть увеличьте значения задержек.

Даже такой простой макрос, может существенно облегчить вам некоторые игровые моменты, а вместе с тем и поднять ваш винрейт.

Скачать уже готовый макрос для Dota 2 вы можете по этой ссылке – Макрос Clicker.

Источник статьи: http://promacro.ru/statya/kak-sdelat-makros-na-myshku/

VBA для Excel: базовый курс

Создавайте макросы и пишите программы на VBA для Excel. Даже базовые знания значительно расширят Ваши возможности использования электронных таблиц.

  • Описание
  • Комментарии
  • Дополнительно

Главная цель курса:

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

Этот курс о том:

  • Как создавать и редактировать макросы.
  • Как создавать несложные программы с нуля.
  • Как получить доступ из своей программы к объектам Excel (ячейкам, диапазонам, листам… ).
  • 32 урока, более 2 часов материала.
  • 10 бесплатных уроков
  • Курс создавали эксперты работы в программе.
  • Курс сделан очень качественно, его приятно проходить.
  • Легко воспринимается.
  • Интерактивные тренировки, где Вы можете опробовать изучаемые навыки.
  • Вы можете скачать Файлы с данными, с помощью которых мы делали этот курс.

Хотите научиться писать макросы для Microsoft Excel?

Тогда вам нужен курс для начинающих по Visual Basic для Excel от компании skill.im. Специально для тех, кто хочет решать более сложные задачи в Excel, мы подготовили интересный самоучитель, который будет полезен как начинающим, которые никогда не занимались программированием, так и людям, которые знакомы с Visual Basic, но хотят усовершенствовать свои знания.

Чем полезен базовый этап по VBA для Excel?

В целом, наш самоучитель состоит из трех разделов: продвинутый, базовый и мастерский. Базовая часть будет полезна тем людям, которые не знакомы с программирования и никогда не писали программ, то есть – для чайников. Остальные этапы удовлетворять запросы более опытных пользователей.

Базовый этап состоит из пяти разделов.

В первом вы узнаете:

• Параметры безопасности Excel и файлов

• Все о вкладке «Разработчик».

Второй шаг мы посвятили знакомству с макросами:

• Как записать и запустить макрос в Excel

• Редактирования макроса для Excel в The Visual Basic Editor

• Знакомство с Visual Basic Editor на Excel

В третьем разделе мы поговорим о процедурах и функциях

• Что такое модуль

• Создание функции для Excel

В четвертом разделе мы начнем программировать на VBA

А в пятом будем работать с объектами Excel.

Объявление пользовательской функции

Синтаксис функции

1
2
3
4
5
6
7

StaticFunctionИмя(СписокАргументов)AsТипДанных

Операторы

Имя=выражение

ExitFunction

Операторы

Имя=выражение

EndFunction

Компоненты функции

  • Static — необязательное ключевое слово, указывающее на то, что значения переменных, объявленных в функции, сохраняются между ее вызовами.
  • Имя — обязательный компонент, имя пользовательской функции.
  • СписокАргументов — необязательный компонент, одна или более переменных, представляющих аргументы, которые передаются в функцию. Аргументы заключаются в скобки и разделяются между собой запятыми.
  • Операторы — необязательный компонент, блок операторов (инструкций).
  • Имя = выражение — необязательный* компонент, присвоение имени функции значения выражения или переменной. Обычно, значение присваивается функции непосредственно перед выходом из нее.
  • Exit Function — необязательный компонент, принудительный выход из функции, если ей уже присвоено окончательное значение.

*Один из компонентов Имя = выражение следует считать обязательным, так как если не присвоить функции значения, смысл ее использования теряется.

Видимость функции

Видимость пользовательской функции определяется необязательными ключевыми словами Public и Private, которые могут быть указаны перед оператором Function (или Static, в случае его использования).

Ключевое слово Public указывает на то, что функция будет доступна для вызова из других процедур во всех модулях открытых книг Excel. Функция, объявленная как Public, отображается в диалоговом окне Мастера функций.

Ключевое слово Private указывает на то, что функция будет доступна для вызова из других процедур только в пределах программного модуля, в котором она находится. Функция, объявленная как Private, не отображается в диалоговом окне Мастера функций, но ее можно ввести в ячейку вручную.

Если ключевое слово Public или Private не указано, функция считается по умолчанию объявленной, как Public.

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

Список запущенных процессов

Добавляем Listbox и 1 кнопку, вставляем следующий код:

Option Explicit
Private Declare Function CreateToolhelpSnapshot Lib _
"Kernel32" Alias "CreateToolhelp32Snapshot" _
(ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib _
"Kernel32" Alias "Process32First" _
(ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib _
"Kernel32" Alias "Process32Next" _
(ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)

Private Const TH32CS_SNAPPROCESS As Long = 2&
Private Const MAX_PATH As Integer = 260

Private Type PROCESSENTRY32
        dwSize As Long
        cntUsage As Long
        th32ProcessID As Long
        th32DefaultHeapID As Long
        th32ModuleID As Long
        cntThreads As Long
        th32ParentProcessID As Long
        pcPriClassBase As Long
        dwFlags As Long
        szExeFile As String * MAX_PATH
End Type

Dim hSnapShot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long

Private Sub Command1_Click()
        List1.Clear
        hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
        If hSnapShot = 0 Then
                Exit Sub
        End If
        uProcess.dwSize = Len(uProcess)
        r = ProcessFirst(hSnapShot, uProcess)
        Do While r
                List1.AddItem uProcess.szExeFile
                r = ProcessNext(hSnapShot, uProcess)
        Loop
        Call CloseHandle(hSnapShot)
End Sub

Компоненты цикла For Each… Next

Компонент Описание
element Обязательный атрибут в операторе For Each, необязательный атрибут в операторе Next. Представляет из себя переменную, используемую для циклического прохода элементов группы (диапазон, массив, коллекция), которая предварительно должна быть объявлена с соответствующим типом данных*.
group Обязательный атрибут. Группа элементов (диапазон, массив, коллекция), по каждому элементу которой последовательно проходит цикл For Each… Next.
statements Необязательный** атрибут. Операторы вашего кода.
Exit For Необязательный атрибут. Оператор выхода из цикла до его окончания.

*Если цикл For Each… Next используется в VBA Excel для прохождения элементов коллекции (объект Collection) или массива, тогда переменная element должна быть объявлена с типом данных Variant, иначе цикл работать не будет.

**Если не использовать в цикле свой код, смысл применения цикла теряется.

Учимся пользоваться Object Browser

Выше была упомянута функция MsgBox, но ее возможности полностью не рассмотрены. Это хороший случай, чтобы научиться использовать браузер объектов (№5 на изображении окна редактора VBA).

Нажмите кнопку на панели или клавишу F2, чтобы отобразить Object Browser:

Выпадающий список №1 содержит перечень всех подключенных библиотек. Используйте его только в том случае, если точно знаете, к какой библиотеке относится изучаемый класс, функция и т.д. (подключить или отключить любую из доступных библиотек можно, выбрав пункт «References» на вкладке «Tools» главного меню редактора VBA).

Примечание: Библиотеки предоставляют стандартные и дополнительные возможности работы с объектами Excel (ячейки, листы, книги и т.д.), файловой системы, изображениями, базами данных и другими.

Поле №2 предназначено для поиска свойств, методов, классов подключенных библиотек.

Результаты поиска отображаются в поле №3 и представляют из себя таблицу с тремя столбцами: библиотека, класс и член класса.

Поле №4 содержит перечень всех классов, выбранных в поле №1 библиотек.

В области №5 содержится список всех членов класса, выбранного в поле №4.

Поле №6 содержит краткую справку о выделенном результате поиска, классе или члене класса.

Примечание: библиотеки, классы, функции и процедуры (методы), свойства и т.п. в Object Browser имеют различные обозначения, представленные набором пиктограмм. Краткая справка (поле №6) всегда указывает какой тип элемента выделен

Обращайте на это внимание, чтобы в дальнейшем лучше ориентироваться в работе с объектами

Примечание: Понятие объекта не относится к теме данной статьи и будет рассмотрено в следующих материалах.

Теперь найдем функцию MsgBox с помощью браузера объектов. В поле поиска (№2) впишите ее название и кликните по кнопке с изображением бинокля. В поле результатов поиска выделите строку со значением MsgBox в столбце «Member». В поле №6 появилась краткая информация, сообщающая нам, что выбранный член является функцией, имеет перечень аргументов, возвращает результат типа VbMsgBoxResult, относиться в классу Interaction библиотеки VBA.

Для получения полной справки кликните по кнопке с изображением вопросительного знака. В зависимости от версии Excel, Вас перенаправить на файл справки или сайт с документацией от Microsoft.

Изучите самостоятельно возможности функции MsgBox.

Что такое VBA?

VBA — язык (расшифровывается как Visual Basic for Application) был разработан компанией Microsoft. Данный язык не является самостоятельным, а предназначен для автоматизации процессов в пакете MS Office. VBA широко используется в Excel, а также в Access, Word и других программах пакета.

VBA — простой язык программирования, которому может научиться любой желающий. Изучив его, вы сможет предоставлять команды Excel, что делать с колонками, строками, значениями в ячейках, перемещать/добавлять/сортировать листы, выводить заранее запрограммированные сообщения, писать свои формулы и функции и т.д. Суть языка заключается в оперировании объектами (что относит его к объектно-ориентированному программированию).

Чтобы работать с VBA кодом, нам нужен редактор, который уже установлен по умолчанию. Вы можете открыть его, нажав комбинацию клавиш » ALT + F11 «.

Первая программа на VBA Excel

Добавляем на стандартный модуль шаблон процедуры – строки ее начала и завершения, между которыми мы и будем писать свою первую программу (процедуру, подпрограмму).

  1. Откройте стандартный модуль двойным кликом по его ссылке в проводнике. Поместите в него курсор и нажмите кнопку «Procedure. » во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.

В результате откроется окно добавления шаблона процедуры (Sub).

  1. Наберите в поле «Name» имя процедуры: «Primer1», или скопируйте его отсюда и вставьте в поле «Name». Нажмите кнопку «OK», чтобы добавить в модуль первую и последнюю строки процедуры.

Имя процедуры может быть написано как на латинице, так и на кириллице, может содержать цифры и знак подчеркивания. Оно обязательно должно начинаться с буквы и не содержать пробелы, вместо которых следует использовать знак подчеркивания.

  1. Вставьте внутрь шаблона процедуры следующую строку: MsgBox «Привет» .

Функция MsgBox выводит информационное сообщение с указанным текстом. В нашем примере – это «Привет».

  1. Проверьте, что курсор находится внутри процедуры, и запустите ее, нажав клавишу «F5». А также, запустить процедуру на выполнение можно, нажав на треугольник (на изображении под пунктом меню «Debug») или на кнопку «Run Sub/UserForm» во вкладке «Run» главного меню редактора VBA Excel.

Если вы увидели такое сообщение, как на изображении, то, поздравляю – вы написали свою первую программу!

Оператор цикла «For» в Visual Basic

Структура оператора цикла For в Visual Basic может быть организована в одной из двух форм: как цикл For … Next или как цикл For Each.

Цикл «For … Next»

Цикл For … Next использует переменную, которая последовательно принимает значения из заданного диапазона. С каждой сменой значения переменной выполняются действия, заключённые в теле цикла. Это легко понять из простого примера:

For i = 1 To 10
   Total = Total + iArray(i)
Next i

В этом простом цикле For … Next используется переменная i, которая последовательно принимает значения 1, 2, 3, … 10, и для каждого из этих значений выполняется код VBA, находящийся внутри цикла. Таким образом, данный цикл суммирует элементы массива iArray в переменной Total.

В приведённом выше примере шаг приращения цикла не указан, поэтому для пошагового увеличения переменной i от 1 до 10 по умолчанию используется приращение 1. Однако, в некоторых случаях требуется использовать другие значения приращения для цикла. Это можно сделать при помощи ключевого слова Step, как показано в следующем простом примере.

For d = 0 To 10 Step 0.1
   dTotal = dTotal + d
Next d

Так как в приведённом выше примере задан шаг приращения равный 0.1, то переменная dTotal для каждого повторения цикла принимает значения 0.0, 0.1, 0.2, 0.3, … 9.9, 10.0.

Для определения шага цикла в VBA можно использовать отрицательную величину, например, вот так:

For i = 10 To 1 Step -1
   iArray(i) = i
Next i

Здесь шаг приращения равен -1, поэтому переменная i с каждым повторением цикла принимает значения 10, 9, 8, … 1.

Цикл «For Each»

Цикл For Each похож на цикл For … Next, но вместо того, чтобы перебирать последовательность значений для переменной-счётчика, цикл For Each выполняет набор действий для каждого объекта из указанной группы объектов. В следующем примере при помощи цикла For Each выполняется перечисление всех листов в текущей рабочей книге Excel:

Dim wSheet As Worksheet

For Each wSheet in Worksheets
   MsgBox "Найден лист: " & wSheet.Name
Next wSheet

Оператор прерывания цикла «Exit For»

Оператор Exit For применяется для прерывания цикла. Как только в коде встречается этот оператор, программа завершает выполнение цикла и переходит к выполнению операторов, находящихся в коде сразу после данного цикла. Это можно использовать, например, для поиска определённого значения в массиве. Для этого при помощи цикла просматривается каждый элемент массива. Как только искомый элемент найден, просматривать остальные нет необходимости – цикл прерывается.

Применение оператора Exit For продемонстрировано в следующем примере. Здесь цикл перебирает 100 записей массива и сравнивает каждую со значением переменной dVal. Если совпадение найдено, то цикл прерывается:

For i = 1 To 100
   If dValues(i) = dVal Then
      IndexVal = i
      Exit For
   End If
Next i

Не следовало бы делать предположений.

Но я все же сделаю. Я предполагаю, что вы не такой уж и чайник, наоборот, думаю, вы должны весьма комфортабельно чувствовать себя в Windows. Поэтому, если вы не знаете, как обращаться с мышью, выбирать из меню и щелкать на кнопках, появляющихся на экране вашего монитора, вам имеет смысл предварительно прочитать одну из книг, выпущенных издательством Диалектика, например Windows для чайников (есть также отдельные издания по Windows 95, Windows 98, Windows Me и Windows 2000). Далее, чтобы использовать VBA, вы должны иметь по крайней мере одно приложение, в которое встроены средства разработки VBA-программ. Среди таких приложений прежде всего следует назвать лидера рынка программ для бизнеса Microsoft Office, за которым следует постоянно растущая группа продуктов, принадлежащих другим производителям. Изо всех многочисленных возможностей подойдет, например, любое из следующих приложений:

* любое приложение Microsoft Office — Word, Excel, PowerPoint, Access, Outlook или FrontPage;

* CorelDraw версии 9 или 10 и Corel WordPerfect Office 2000;

* серия графических бизнес-приложений iGrafx от Micrografx;

* Visio версий 4.5, 5 или 2000;

* AutoCAD R14, AutoCAD 2000 или AutoCAD 2000i для Windows;

* M.Y.O.B. Accounting Software;

* пакет программ для учета ресурсов Great Plains (некоторые программы из этого пакета понимают VBA);

* Omni Trader, средства оценки рисков и управления торговыми операциями.

Вариант 1: Автоматическая запись макросов

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

Подробнее: Включение и отключение макросов в Microsoft Excel

Когда все готово, приступаем к записи.

  1. Перейдите на вкладку «Разработчик». Кликните по кнопке «Запись макроса», которая расположена на ленте в блоке инструментов «Код».

Открывается окно настройки записи макроса. Тут можно указать любое имя для него, если установленное по умолчанию вас не устраивает. Главное, чтобы имя это начиналось с буквы, а не с цифры, а также в названии не должно быть пробелов. Мы оставили название по умолчанию – «Макрос1».
Тут же при желании можно установить сочетание клавиш, при нажатии на которые макрос будет запускаться. Первой клавишей обязательно должна быть Ctrl, а вторую пользователь устанавливает самостоятельно. Мы в качестве примера установили клавишу М.
Далее следует определить, где будет храниться макрос. По умолчанию он расположен в этой же книге (файле), но при желании можно установить хранение в новой книге или в отдельной книге макросов. Мы оставим значение по умолчанию.
В самом нижнем поле можно оставить любое подходящее по контексту описание макроса, но это делать не обязательно. Когда все настройки выполнены, жмем на кнопку «OK».

После этого все ваши действия в данной книге (файле) Excel будут записываться в макрос до тех пор, пока вы сами не остановите запись.
Для примера запишем простейшее арифметическое действие: сложение содержимого трех ячеек (=C4+C5+C6).

Когда алгоритм был выполнен, щелкаем на кнопку «Остановить запись». Эта кнопка преобразовалась из кнопки «Запись макроса» после включения записи.

Запуск макроса

Для проверки того, как работает записанный макрос, выполним несколько простых действий.

  1. Кликаем в том же блоке инструментов «Код» по кнопке «Макросы» или жмем сочетание клавиш Alt + F8.

После этого открывается окно со списком записанных макросов. Ищем макрос, который мы записали, выделяем его и кликаем на кнопку «Выполнить».

Можно поступить еще проще и не вызывать даже окно выбора макросов, так как на первом этапе мы задали сочетание клавиш для быстрого вызова макроса. В нашем случае это Ctrl + М. Жмем данную комбинацию на клавиатуре, после чего он запускается.
Как видим, он выполнил в точности все те действия, которые были записаны ранее.

Редактирование макроса

Естественно, при желании вы можете корректировать созданный макрос, чтобы всегда поддерживать его в актуальном состоянии и исправлять некоторые неточности, допущенные во время процесса записи.

  1. Снова щелкаем на кнопку «Макросы». В открывшемся окне выбираем нужный и кликаем по кнопке «Изменить».

Открывается «Microsoft Visual Basic» (VBE) – среда, где происходит их редактирование.

Запись каждого макроса начинается с команды , а заканчивается командой . Сразу же после указывается имя макроса. Оператор указывает выбор ячейки. Например, при команде «Range(«C4»).Select» выбирается ячейка «C4». Оператор используется для записи действий в формулах и других расчетов.
Попытаемся немного изменить макрос, дописав выражение:

Выражение заменим на .

Закрываем редактор и запускаем макрос. Как видим, вследствие введенных нами изменений была добавлена дополнительная ячейка с данными. Она также была включена в расчет общей суммы.
В случае если макрос слишком большой, его выполнение может занять значительное время, но внесением ручного изменения в код мы можем ускорить процесс. Добавляем команду . Она позволит сохранить вычислительные мощности, а значит, ускорить работу. Это достигается путем отказа от обновления экрана во время выполнения вычислительных действий. Чтобы возобновить обновление после выполнения макроса, в его конце пишем команду .
Добавим также команду в начало кода, а в его конец дописываем . Этим мы сначала отключаем автоматический пересчет результата после каждого изменения ячеек, а в конце макроса – включаем. Таким образом, Excel подсчитает результат только один раз, а не будет его постоянно пересчитывать, чем сэкономит время.

Первая программа на VBA Excel

Добавляем на стандартный модуль шаблон процедуры – строки ее начала и завершения, между которыми мы и будем писать свою первую программу (процедуру, подпрограмму).

  1. Откройте стандартный модуль двойным кликом по его ссылке в проводнике. Поместите в него курсор и нажмите кнопку «Procedure. » во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.

В результате откроется окно добавления шаблона процедуры (Sub).

  1. Наберите в поле «Name» имя процедуры: «Primer1», или скопируйте его отсюда и вставьте в поле «Name». Нажмите кнопку «OK», чтобы добавить в модуль первую и последнюю строки процедуры.

Имя процедуры может быть написано как на латинице, так и на кириллице, может содержать цифры и знак подчеркивания. Оно обязательно должно начинаться с буквы и не содержать пробелы, вместо которых следует использовать знак подчеркивания.

  1. Вставьте внутрь шаблона процедуры следующую строку: MsgBox «Привет» .

Функция MsgBox выводит информационное сообщение с указанным текстом. В нашем примере – это «Привет».

  1. Проверьте, что курсор находится внутри процедуры, и запустите ее, нажав клавишу «F5». А также, запустить процедуру на выполнение можно, нажав на треугольник (на изображении под пунктом меню «Debug») или на кнопку «Run Sub/UserForm» во вкладке «Run» главного меню редактора VBA Excel.

Если вы увидели такое сообщение, как на изображении, то, поздравляю – вы написали свою первую программу!

Изменение содержимого ячеек

Для обозначения диапазонов, в том числе и отдельных ячеек, в VBA Excel имеется ключевое слово «Range». Ячейке A1 на рабочем листе будет соответствовать выражение «Range(“A1”)» в коде VBA Excel.

Пример 4

1
2
3
4
5
6
7
8
9
10
11
12
13
14

PublicSubPrimer4()

‘Объявляем переменную x

Dimx

‘Присваиваем значение переменной x

x=125.61

‘Присваиваем ячейке A1
‘значение переменной x

Range(«A1»)=x

‘Присваиваем значение ячейке B1

Range(«B1»)=356.24

‘Записываем в ячейку C1
‘сумму ячеек A1 и B1

Range(«C1»)=Range(«A1»)+Range(«B1»)

EndSub

Скопируйте процедуру этого примера в стандартный модуль и запустите на выполнение. Перейдите на активный рабочий лист Excel, чтобы увидеть результат.

Вызов процедур Sub в пределах одной книги

Вызов подпрограммы из кода другой процедуры Sub, расположенной в том же модуле или другом модуле одной рабочей книги (проекта VBA) осуществляется с помощью ключевого слова Call или без него по имени подпрограммы. Вызывающая процедура Sub может быть любой видимости, как Public, так и Private, а вызываемая, если расположена в том же модуле, может быть любой видимости, но если расположена в другом модуле, должна быть объявлена как Public.

Синтаксис вызова подпрограмм в пределах одной книги

ИмяПроцедуры

  • Call — необязательное ключевое слово;
  • ИмяПроцедуры — обязательный компонент, имя вызываемой подпрограммы;
  • Аргументы — необязательный компонент, список аргументов вызываемой процедуры Sub, разделенных запятой.

Вызов подпрограмм без аргументов в пределах одного модуля

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

1
2
3
4
5
6
7
8
9
10
11
12

PrivateSubtest1()

Calltest2

test3

EndSub

PrivateSubtest2()

MsgBox»Процедура test2 (Private) вызвана с ключевым словом Call!»

EndSub

PublicSubtest3()

MsgBox»Процедура test3 (Public) вызвана без ключевого слова Call!»

EndSub

Вы можете скопировать приведенный код в свой модуль и посмотреть, запустив процедуру test1, как она последовательно запускает процедуры test2 и test3.

Вызов подпрограмм с аргументами в пределах одного модуля

При вызове процедур Sub с аргументами и ключевым словом Call, аргументы заключаются в скобки, без ключевого слова Call — аргументы не заключаются в скобки:

1
2
3
4
5
6
7
8
9
10
11
12

PrivateSubtest4()

Calltest5(15,25)

test6256,312,4.52

EndSub

Subtest5(aAsSingle,bAsSingle)

MsgBoxa+b

EndSub

Subtest6(cAsSingle,dAsSingle,eAsSingle)

MsgBoxc+d+e

EndSub

Вы можете разместить этот код в своем модуле и протестировать его.

Вызов подпрограмм из разных модулей одной книги

Правила, касающиеся использования оператора Call и заключения аргументов в скобки, верны и для вызова процедур Sub, находящихся в разных модулях. Единственным отличием является необходимость вместе с именем вызываемой подпрограммы указывать место ее расположения. Место расположения и имя подпрограммы разделяются точкой.

Вызываемая подпрограмма расположена в Стандартном модуле

1
2
3
4
5
6
7

‘Процедура Sub с уникальным именем —
‘возможны два варианта:
УникальноеИмяПроцедуры
ИмяМодуля.УникальноеИмяПроцедуры
‘Процедура Sub с неуникальным именем —
‘возможен только один вариант:
ИмяМодуля.НеуникальноеИмяПроцедуры

ИмяМодуля — уникальное имя стандартного модуля, отображаемое в проводнике проекта VBA.

Неуникальное имя процедуры возникает, когда создаются процедуры с одним именем в разных модулях. Если есть вероятность дублирования в дальнейшем имени подпрограммы и лишения ее уникальности, то лучше сразу вызывать ее с указанием имени стандартного модуля.

Вызываемая подпрограмма расположена в модуле книги, модуле листа, модуле формы

1
2
3
4
5
6
7

‘В модуле книги:
ЭтаКнига.ИмяПроцедуры
‘В модуле листа:
ИмяЛиста.ИмяПроцедуры

Worksheets(«Имя ярлычка листа»).ИмяПроцедуры
‘В модуле формы:
ИмяФормы.ИмяПроцедуры

  • ЭтаКнига — так и пишется, указывает на текущую книгу в которой расположены вызывающая и вызываемая подпрограммы.
  • ИмяЛиста — уникальное имя листа, которое в проводнике проекта VBA указано без скобок (по умолчанию: Лист1, Лист2, Лист3 и т.д.).
  • Имя ярлычка листа — дублирующее имя листа, которое в проводнике проекта VBA указано в скобках.
  • ИмяФормы — уникальное имя пользовательской формы, отображаемое в проводнике проекта VBA.