Примеры макросов Excel. Основные операторы vba – Условные операторы

Детские товары 19.08.2019
Детские товары

Мы вкратце познакомились с записью макроса при помощи рекордера Excel. Сейчас мы углубимся в эти дебри и напишем для примера пару простейших макросов. В одном из примеров по традиции продемонстрируем работу с диалоговым окном типа «Сообщение», в другом расширим наше диалоговое окно.

Пример 1. Простое диалоговое сообщение msgBox в VBA

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

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

Итак, для того чтоб создать макрос, Вам необходимо открыть окно всеми любимого редактора Visual Basic (VB). Для этого выполняем следующие действия: Сервис-Макрос-Редактор Visual Basic (Alt+F11).


Откроется окно редактора MS Visual Basic.

Если у Вас отсутствуют левые окна, то их необходимо включить. Для этого нажмите F4 – Открывает окно свойств Properties Window, и сочетание клавиш Ctrl+R – открывает окно Project Explorer. Без этих окон в дальнейшем затруднительно работать. Все! Сделали.

Что мы видим в окне Project ? В данном окне отражается как раз таки структура нашей книги. Объекты книги – Лист1, 2, 3, Эта книга. Более подробно изучим данные объекты в последующих статьях, а пока возвращаюсь к примеру.

Что необходимо сделать для того чтоб начать писать код? Необходимо создать модуль. Примечание: Вообще, в дальнейшем рекомендую разделять код обработчиков на разные модули. Это облегчит понимание кода и создаст порядок в структуре.

Создаем модуль: Insert – Module

Перед нами открылось пустое окно модуля, напоминает блокнот. Такое окно мы уже видели, когда записывали первый макрос в . По правилам «хорошего тона» дадим имя нашему модулю, назовем его «MacroBook ». Для этого перейдите в окно свойств и введите имя в поле (Name)

Переходим в окно редактирования кода и пишем следующее:

Готово! Открываем окно рабочей книги Excel, жмем Alt+F8 и видим наш макрос «Hello»

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

Пример 2. Расширенное диалоговое сообщение msgBox в VBA

Рассмотрим еще один вид диалоговых сообщений, которые содержат дополнительные кнопки «Да», «Нет», «Отмена»

Переходим к коду нашего макроса «Hello» и дописываем к команде msgbox следующее:

MsgBox "Hello, World!", vbYesNoCancel, "Мой макрос"

Обратите внимание, когда вы поставите запятую после «Hello, World!», у Вас должен появиться список всех доступных типов диалоговых окон

Поэкспериментируйте с каждым для понимания.

Запустим наш макрос

Теперь у нас открылась совсем иная форма сообщения.

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

Видео: Пример работы msgbox в vba

Тема 2.3. Программные средства презентаций и основы офисного программирования

Тема 2.4. Системы управления базами данных и экспертные системы

2.4.11. Учебная база данных с главной кнопочной формой "Training_students" - Скачать

Программирования VBA и макросы

2.3. Программные средства презентаций и основы офисного программирования

2.3.7. Основы офисного программирования

Визуальный язык программирования Бейсик для приложений: Visual Basic for Applications (VBA)

VBA – это подмножество визуального языка программирования Visual Basic (VB), которое включает почти все средства создания приложений VB.

VBA отличается от языка программирования VB тем, что система VBA предназначена для непосредственной работы с объектами Office, в ней нельзя создавать проект независимо от приложений Office. Таким образом, в VBA языком программирования является VB, а инструментальная среда программирования реализована в виде редактора VB, который может активизироваться из любого приложения MS Office.

Например, для того, чтобы открыть редактор VBA из приложения PowerPoint необходимо выполнить команду Сервис / Макрос / Редактор VBA. Вернуться из редактора в приложение можно, выбрав команду Microsoft PowerPoint в меню Вид или комбинацией клавиш Alt + F11.

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

Каждое событие проявляется в определенных действиях программы (откликах, реакции). Пользовательская форма позволяет создавать окна диалога приложений. Язык программирования VBA служит для написания кода программы, например для создания функций пользователя в Excel.

Тот факт, что система программирования VBA предназначена для работы с объектами Office, позволяет эффективно ее применять для автоматизации деятельности, связанной с разработкой различных типов документов.

Рассмотрим алгоритм создания функций пользователя в VBA:

1. Вызвать окно редактора кода VBA, выполнив команду Сервис / Макрос / Редактор Visual Basic или нажать Alt+F11.

2. Выполнить пункт меню редактора Insert / Module (Вставка / Модуля).

3. Далее выполнить Insert / Procedure (Вставка /Процедура). В открывшемся диалогом окне Add Procedure ввести имя функции (например, СУММА5) и установить переключатели: Type (тип) – в положение Function (функция); Scope (Область определения) - в положение Public (Общая) и щелкнуть ОК.


Рис. 1.

4. В окне редактора для программирования VBA появится заготовка функции: заголовок - Public Function СУММА5() и окончание - End Function, между которыми надо поместить код тела функции.


Рис. 2.

5. Далее вводим список параметров функции, например, в скобках указываем (x, y, z, i, j), тип данных (для точных расчетов) и тип возвращаемого функцией значения (в данном примере не будем вводить). Кроме того, вводим тело функции, например, СУММА5 = x + y + z + i + j. В итоге получим следующий текст программы:

Public Function СУММА5(x, y, z, i, j)
СУММА5 = x + y + z + i + j
End Function

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

7. Выполняем "Вставка/Функция" и в открывшемся окне мастера функций выбираем категорию «Определенные пользователем», а в окне «Выберите функцию» выделяем СУММА5 и щелкаем ОК.



Рис. 3.



Рис. 4.

Макросы

Создание макроса

Создадим макрос для автоматического суммирования двух чисел в ячейках A1, B1 и размещения результата в ячейке C1, а также заливки ячейки C1 бирюзовым цветом.

Алгоритм создания макроса для поставленной задачи:

1. Выберите Сервис/Макрос, Начать запись.

2. В поле Имя макроса введите имя для макроса. Первым символом имени макроса должна быть буква. В имени макроса не допускаются пробелы; в качестве разделителей слов можно использовать знаки подчеркивания.

3. Для того чтобы запускать макрос с помощью сочетания клавиш, введите букву в поле Сочетание клавиш. Допускается использование сочетаний CTRL+ буква (для строчных букв) или CTRL+SHIFT+ буква (для прописных букв), где буква - любая буквенная клавиша на клавиатуре. Не выбирайте стандартного сочетания клавиш, так как выбранное сочетание клавиш подавляет стандартные сочетания клавиш Microsoft Excel на то время с данной книгой.

4. В поле "Сохранить" выберите книгу, в которой требуется сохранить макрос. Сохраните макрос в «Эта книга». Для создания краткого описания макроса, введите необходимый текст в поле Описание. На скриншоте представлен пример заполнения окна диалога «Запись макроса»


Рис. 5.

5. Нажмите кнопку OK.

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


Рис. 6.

7. Нажмите кнопку Остановить запись на плавающей панели инструментов «Ос» (Остановить запись) или Сервис / Макрос / Остановить макрос.

По окончании записи макроса он появляется в списке макросов под своим именем.

Редактор VBA автоматически записал последовательность макрокоманд или программу по выполненным действиям (Рис. 7.).



Рис. 7.

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

Назначение кнопки панели инструментов для запуска макроса

Макрос можно запустить с помощью кнопки на встроенной панели инструментов, для этого необходимо выполнить:

  1. Выбрать пункт Настройка в меню Сервис.
  2. В окне диалога Настройка выбрать вкладку Команды и выбрать параметр Макросы в списке Категории, в списке Команды выделить «Настраиваемая кнопка».
  3. Из списка Команды перетащить с помощью мыши настраиваемую кнопку на панель инструментов.
  4. Щелкнуть эту кнопку правой кнопкой мыши и выбрать команду Назначить макрос в контекстном меню.
  5. Ввести имя макроса в поле Имя макроса.

Назначение области графического объекта для запуска макроса:

  1. Создайте графический объект.
  2. К выделенному графическому объекту, примените контекстное меню.
  3. Выберите в контекстном меню команду Назначить макрос.
  4. В появившемся окне диалога "Назначить макрос объекту", введите название макроса в поле Имя макроса, затем нажмите кнопку OK.

Редактирование макроса осуществляется редактором VBA, для этого необходимо выполнить следующее:

  1. Выбрать команду Сервис / Макрос / Макросы.
  2. Выбрать имя макроса, который следует изменить, в списке Имя.
  3. Нажать кнопку Изменить, будет открыто окно Visual Basic, в котором возможно редактирование команд выбранного макроса, записанных на языке Visual Basic.


Удаление макроса:

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

Переименование макроса

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

(Visual Basic for Application)

Basic- язык программирования высокого уровня (интерпретатор)

Visual- содержит наглядные средства по разработке программ (кодов), упрощающие работу пользователя, позволяет записывать коды с помощью макрорекодера.

Application- приложение к программной системеMSOfficeнаряду с приложениямиWord,Access,PowerPoint.

Зачем нужен VBA?

    Объединяет (интегрирует) приложения, позволяет управлять работой других приложений не выходя из Excel, внедрять объекты из других приложений;

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

VBAотносится к числу объектно-ориентированных языков, то есть при разработке проектов используются объекты.Определение: объединение данных и кода в единое целоею Например, элемент «Кнопка» и соответствующий код, связанный с этой кнопкой обеспечат переход на другой лист рабочей книги.

Основные объекты VBA:

Application (само приложение Excel)

WorkBook(рабочая книга – ваш файл)

WorkSheetFunction (мастер функций)

WorkSheet (рабочий лист)

Range (диапазон)

Chart (диаграмма)

Style (стиль)

Border (границы)

Interior (цвет фона)

Font (шрифт)

Множество некоторых объектов составляют семейства –WorkBooks,WorkSheets,Charts.

Объекты обладают свойствами (действия над объектами) и методами (дейстия самих объектов).

Начнем знакомиться со средствами визуализации разработки проектов в VBA. Таковым является Интегрированная Среда Разработки Приложений. Чтобы попасть в эту среду надо выбрать в пункте меню СервисМакросРедакторVBAили нажать одновременно клавишиALTиF11.

На экране появятся компоненты редактора VBA:

Окно проекта Project – VBA Project

Окно свойствPropeties

Окно кода

Окно форм UserForm

Панели инструментов

Окно проекта Project–VBAProject(рис. 1) показывает структуру вашего проекта (файла). Это окно активизируется в редактореVBAвыбором командыViewProjectExplorerили кнопкой «ProjectExplorer» или нажатием клавишCtrl+R

Рис. 1 Окно проекта.

Рис.2 Интегрированная среда разработки приложений

Окно кода предназначено для хранения кода, связанного с объектом. У каждого объекта свое окно, так каждый рабочий лист (WorkSheet) имеет свое окно кода, рабочая книга (WorkBook) – свое окно.

Создание пользовательских функций

Пользовательские функции добавляются к стандартному списку мастера функций (WorkSheetFunction). Эти функции создаются в специальном модуле, сопровождающем объектWorkSheetFunction. Этот модуль добавляется к проекту с помощью командыInsertModule(ВставитьМодуль), в окне проекта он отобразится на уровне вашего приложения. Все коды, написанные в этом модуле, появятся в категории «Функции определенные пользователем» мастера функций.

Итак, добавляем модуль в наш проект (InsertModule) и в окне кода этого модуля пишем текст программы:

y = Cos((x + 2) / 2) ^ 2 + Exp(-2 * x) / (x ^ 2 + 1) ^ 0.5

Затем переходим на рабочий лист «1 график», в ячейке с2 выполним обращение к новой функции, добавленной в мастер функций - y(x). Работа с этой функцией ничем не отличается от работы с любой другой функцией. На первом шаге надо выбратьy(x) в категории «Функции определенные пользователем», на втором шаге в качестве аргументаxуказать ячейкуA2. В результате в ячейке С2 будет записана формула =y(A2). Эту формулу протащить на весь диапазон А2:А17 как показано на рис. 3. Разумеется, результат должен совпасть с тем, что вы получили, вычисляя эту функцию обычными средствами рабочего листа.

Рис 3. Функция y(x), рассчитанная обычным образом и с помощью пользовательской функции.

Основные операторы vba – Условные операторы

Условные операторы имеют 2 формы записи:

1) В одну строку

IF< условие>THEN<оператор 1>

IF,THEN,ELSE–служебные неизменяемые слова, в угловых скобках < >текст пользователя, это то, что вы пишете в соответствии с заданием, в квадратных скобках необязательная часть, текст может отсутствовать. Такая форма обычно используется в случае простых действий, например, при вычислении модуля числаy=х=abs(s) можно использовать следующий оператор:

IF x > 0 THEN y = x ELSE y = -x

2) В несколько строк. В этом случае условный оператор обязательно заканчивается утверждением “ENDIF”

IF <условие> THEN

<оператор 1>

<оператор 2>

<оператор 3>

<оператор 4>

Такая форма используется при сложных вычислениях, например, при вычислении корней квадратного уравнения. Пусть надо найти корни уравнения a*x 2 +b*x+c= 0. Как известно в случае еслиb 2 -4*a*c≥ 0, то корни вычисляются по формуле
, еслиb 2 -4*a*c≤ 0, то корней в области действительных чисел нет. Условный оператор, реализующий этот алгоритм, выглядит следующим образом:

IF b^2 -4*a*c>= 0 THEN

X1 = (-b + (b^2 - 4*a*c)^(1/2)) / (2*a)

X2 = (-b + (b^2 + 4*a*c)^(1/2)) / (2*a)

X1 = “ РЕШЕНИЯ НЕТ”

X2 = “ РЕШЕНИЯ НЕТ”

Примеры написания пользовательских функций в vba

Пример 1.

F
unction y(x)

y = Cos((x + 2) / 2) ^ 2 + Exp(-2 * x) / (x ^ 2 + 1) ^ 0.5

End Function

Пример 2

Function z(x)

If x < 0 Then

z = (1 + x + x ^ 2) / (1 + x ^ 2)

If x < 1 Then

z = (1 + 2 * x / (1 + x ^ 2)) ^ (1 / 2)

z = 2 * Abs(0.5 + Sin(x))

End Function

Лекция 2

    Свойства, методы и события объектов VBA. Пример процедуры с использованием отдельных свойств объектаApplication.

    Элементы управления

    Типы переменных в VBA

    Операторы цикла

    Пример программы табулирования функции

Свойства, методы и события объектов VBA. Пример процедуры с использованием отдельных свойств объектаApplication.

Продолжим знакомство с объектной моделью VBA. Все объекты организованы в иерархическую структуру, подчиненную объекту верхнего уровня «Application».

Application. WorkBooks(“Графики”).

Если рабочая книга (файл) “Графики” является активной, то достаточно указать

Worksheets(“Содержание”).Range(“A1”).

Если же вы работаете на листе “Содержание” , то ссылка будет выглядеть Range(“A1”).

Все объекты имеют свойства, методы и события.

Свойство это некоторая характеристика объекта (цвет, форма, наименование, расположение, видимость и т.д.) Устанавливается значение объекта так:

Объект.Свойство = значение свойства

Метод это действие, выполняемое над объектом (открыть, закрыть, удалить). Правило записи метода:

Объект. Метод

Событие это действие, распознаваемое объектом (щелчок мышью, двойной щелчок, нажатие клавиши).

Суть программирования в VBAсостоит в двух понятиях – событии и отклике на него. Если пользователь производит воздействие на систему (нажатие кнопки), что является событием, то средствамиVBAможно запрограммировать отклик – ответное действие.

Приведем некоторые свойства, методы и события основных объектов.

Свойство

Объект Application

Caption (заголовок объекта)

Quit (выход изExcel

NewWorkBook(создание новой рабочей книги)

AutoREcover (автосохранение)

Save(сохранение)

SheetActivate(переход на рабочий лист)

ReferenceStyle(стиль ссылок)

Run(выполнение макроса)

WorkBookOpen(открытие рабочей книги)

MemoryFree(информация о свободной оперативной памяти)

Volatile(перевычисление при изменении в ячейках рабочего листа)

WorkBookBeforeClose(закрытие рабочей книги)

MemoryTotal(информация об общей оперативной памяти)

Calculate(вычисление во всех открытых книгах)

SheetBeforeDubleClick(двойной щелчок)

MemoryUsed(информация о занятой оперативной памяти)

IpputBox(ввод данных)

SheetBeforeRightClick(щелчок правой кнопкой)

CellDragAndDrop(управление перетаскиванием формул в ячейках)

Msgbox(вывод сообщений)

ActiveCell, ActiveSheet (активная ячейка, лист)

Cells(диапазон ячеек)

DisplayFormulaBar(отображение строки формул)

DisplayScrollBar(отображение полос прокрутки)

DisplayStatusBar(отображение строки состояния)

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

Данные процедуры записываются в модуле «Эта книга» и выполняются при открытии и закрытии рабочей книги, то есть при выполнении событий OpenиBeforeClose:

Private Sub workbook_open()

" Заголовок рабочей книги

Application.Caption = "Киса и Ося были здесь"

" Цвет фона диапазона A1:D1 -Красный

"Границы диапазона A1:D1 - пунктир

"отменяется перетаскивание ячеек CellDragAndDrops

Application.CellDragAndDrop = Falsе

‘ убирается строка формул

Application.DisplayFormulaBar = False

‘убираются полосы прокрутки

Application.DisplayScrollBars = False

“устанавливается стиль ссылок R1C1

Application.ReferenceStyle = xlR1C1

"Private Sub Workbook_BeforeClose(Cancel As Boolean)

"Восстанавливается перетаскивание ячеек CellDragAndDrops

Application.CellDragAndDrop = True

‘Восстанавливается строка формул

Application.DisplayFormulaBar = True

‘Восстанавливаются полосы прокрутки

Application.DisplayScrollBars = True

‘Восстанавливается стиль ссылок А1

Application.ReferenceStyle = xlA1

Содержание этой страницы будет наращиваться постоянно...
  1. Программа-калькулятор "Возведение чисел в большие степени".

    Реализовать точное вычисление возведения в большие степени однозначных чисел (от 2 до 9) с помощью длинной арифметики.

  2. С форума от Jonny323. VBA Word

    Привет всем. Очень нужен макрос, думаю не сложный: Печать первой страницы в 6 экземплярах и 2ой страницы в 2 экземплярах.Заранее спасибо.

  3. ProgressBar на форме. VBA Excel

    Элемент управления, который показывает ход выполнения программы (сколько сделано работы из 100%)...

  4. Статистические подсчеты в выделенном тексте. VBA Word

    Создать в Word макрос, который определит количество слов, запятых и точек в произвольном тексте.
    Словами будем называть группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя. Внутри слова не могут находиться точки или запятые. Многоточие не считается за точки…

  5. Статистические подсчеты в тексте документа. Использование UserForm для ввода данных. VBA Word

    Создать в Word программу - В форме пользователь вводит слово или словосочетание, а программа просматривает весь текст и вставляет в конце документа введенное слово (словосочетание), рядом с которым перечислены все номера страниц, на которых это слово встречается. Совпадения номеров страниц не допускаются. То есть если указанное слово на странице 5 встречается три раза, номер 5 в выводе указывается только один раз. Форма должна состоять из следующих компонентов:
    - 1 TextBox для ввода слова (словосочетания);
    - 1 кнопка для выхода из программы;
    - 1 кнопка для запуска поиска и вставки результата в документ;
    - компонент типа Label с поясняющим текстом над строкой ввода;
    - Кроме того, на форме могут быть компоненты типа Frame;

  6. Работа с ListBox (Excel). Привязка, сортировка, множественный выбор...

  7. Программа для решения японской головоломки Судоку (Excel)

  8. Макросы выполнения запросов (т.е. формирование новой таблицы из базы данных Excel)

  9. Сортировка Хоара (алгоритм с wikipedia.org)

    Один из самых быстрых методов сортировки.
  10. Сортировка Слиянием (с использованием Хоара)

    Один из самых быстрых и оптимальных методов сортировки.
  11. VBA Excel: Программа расчета биоритмов человека

  12. Для blackarrow с programmersforum.ru

  13. Определить в какую координатную четверть
    попадает точка с заданными координатами А(а,b). VBA EXCEL.

  14. Представление целого числа прописью VBA EXCEL.

  15. ЛОГИКА.

    Решение квадратного уравнения.
  16. VBA EXCEL.

  17. VBA EXCEL. Задача о треугольнике. Массив, цикл, логика.

    По заданным размерам трех сторон треугольника - определить его вид (прямоугольный, тупоугольный, остроугольный или невозможно построить).
  18. Будильник (alarm clock) в Excel

  19. VBA EXCEL.

  20. VBA EXCEL.

  21. VBA EXCEL.

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

  22. VBA EXCEL. Как скрыть или отобразить элементы листа.

    Иногда, требуется скрыть от пользователя некоторые возможности (как правило, скрывается размещение данных):
    - посещать другие листы данной книги (лучше не знать о них);
    - прокручивать (горизонтально и вертикально) лист
    - читать и изменять формулы в ячейках листа
    - скрывать линии столбцов и строк
    - скрывать заголовки (названия и номера) столбцов и строк
  23. VBA EXCEL. Добавить и удалить пункт меню.

    Не сложно добавить (удалить) собственный пункт в меню Excel. Это все описано в справке.
    Но куда интересней поручить эту работу макросу.
    Тогда появляется возможность при открытии конкретного документа формировать специальное, индивидуальное меню, а после его закрытия привести меню Excel в первоначальное состояние. (Данный пример кода работает только в MS Excel 2003, а в 2007 нужны изменения названий панелей управления)
  24. Клеточные автоматы VBA EXCEL.

  25. Метод Золотого сечения VBA EXCEL.

  26. Замена местами максимального и минимального значений ячеек выделенного диапазона. VBA Excel

    Разработать программу или пользовательскую форму для нахождения и перестановки местами элементов с максимальным и минимальным значением выделенного диапазона рабочей таблицы

  27. Строковая функция, возвращающая квадраты простых чисел от нуля до заданного числа. VBA Excel

    Составить в Excel функцию, получающую натуральное число N и возвращающее квадраты всех простых чисел от 0 до заданного натурального N.

  28. Пользовательская форма (UserForm) для ввода данных по кредитам коммерческого банка. VBA Excel

    Организуйте ввод сведений в таблицу, содержащую данные о выдаче долгосрочных кредитов коммерческим банком со следующими данными: код получателя кредита, наименование получателя кредита, дата выдачи кредита, срок (3-4 срока), на который выдан кредит (в днях), процент, сумма кредита, дата оплаты процентов по кредиту.

  29. Пользовательская форма (UserForm) для ввода данных по Регистрации туристов. VBA Excel

    на этом самом месте...


Рекомендуем почитать

Наверх