Рубрика посвящена разработке макросов и работе с VBA (Visual Basic for Applications). В данном разделе сайта Вы можете познакомиться со способами, правилами и хитростями в разработке макросов на VBA. В статьях будут печататься описания операторов VBA и публиковаться готовые решения и алгоритмы работы.
Блокировка ввода данных в ячейку при заданном условии. Ответ на вопрос подписчика poltorak
Вопрос от подписчика: poltorak
Всем доброго дня!
Что я уже сделал: Есть две разные ячейки. В 1-й ставиться постоянная дата. А 2-я загорается красным, при наступлении 30-го дня от постоянной даты.
И если ввести в эту 2-ю ячейку слово «продлено».То ячейка становиться белого цвета с текстом продлено. Читать далее «Блокировка ввода данных в ячейку при заданном условии. Ответ на вопрос подписчика poltorak»
Возможно ли в Ecxel создать такую формулу? Сумма данных в зависимости от значения в ячейке
Вопрос от подписчика: Возможно ли в Ecxel создать такую формулу? Сумма данных в зависимости от значения в ячейке
Определение совпадающих артикулов в двух диапазонах ячеек.
Добрый день. Меня зовут Руслан.
Программирование на Visual Basic с нуля #1
Задача: определить, какие артикулы из первого диапазона ячеек присутствуют в другом диапазоне ячеек. Под определением подразумеваю выделение цветом ячеек с совпадающими артикулами. В идеале, для каждой пары совпадающих артикулов должен быть свой цвет. Читать далее «Определение совпадающих артикулов в двух диапазонах ячеек.»
Добавление кнопки или стрелки перехода вверх(в начало) на листе Excel. Макрос.
Иногда для листов с большим объемом позиций просто необходима плавающая кнопка или стрелка листающая строки вверх. Ведь не каждый пользователь знает о сочетаниях горячих клавиш ctrl+↑ и ctrl+home. Читать далее «Добавление кнопки или стрелки перехода вверх(в начало) на листе Excel. Макрос.»
Как разблокировать файл «Excel», если забыли пароль. Макрос подбора пароля.
Три способа разблокировать защиту и снять пароль с файла «Excel».
В данной статье описаны несколько способов разблокировки (снятия защиты, пароля) в запароленном файле «Эксель» и приведен макрос подбора пароля к файлу. Читать далее «Как разблокировать файл «Excel», если забыли пароль. Макрос подбора пароля.»
Запуск макроса VBA при установке курсора в текстбокс (TextBox).
Запуск макроса VBA при клике(установке курсора) по текстбоксу(TextBox).
Часто возникает необходимость активации (запуска) макроса VBA Excel при нажатии на поле текстбокса (установке в него курсора). Читать далее «Запуск макроса VBA при установке курсора в текстбокс (TextBox).»
Макрос активации кнопки при помощи галочки(флажка) в чекбоксе(CheckBox).
Макрос включения и отключения кнопки при помощи галочки (флажка) в CheckBox.
Иногда возникают ситуации, когда нужно включать или отключать активную кнопку при помощи галочки в поле чек бокса. Читать далее «Макрос активации кнопки при помощи галочки(флажка) в чекбоксе(CheckBox).»
C# ПЕРВАЯ ПРОГРАММА | VISUAL STUDIO | КАК СОЗДАТЬ ПРОЕКТ | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | Урок #1
Как выполнить (запустить) макрос в «Excel»
О том, как выполнить макрос в «Excel».
Теперь наступило время рассказать, как активировать выполнение уже записанного макроса (произвести запуск макроса) в файле «Excel».
Подготовка к запуску макроса.
Для начала нужно включить вкладку разработчика на панели быстрого доступа. По умолчанию она отключены (скрыта), но именно из нее и происходит управление макросами.
Включение панели разработчика выполняется следующим образом:
- Необходимо нажать на вкладку «Файл».
- Далее «Параметры».
- Настройка ленты.
- В разделе «Настройка ленты» установить флажок (галочку) напротив пункта «Разработчик».
- Нажать кнопку «Ok».
Запуск макроса.
• Войти на вкладку «Разработчик» панели инструментов.
• Кликнуть по пиктограмме «Макросы».
• Выбрать нужный макрос, выделив его название левой кнопкой мыши.
• Нажать кнопку «Выполнить».
Что делать, если макрос не запускается.
Одной из причин отсутствия результата при запуске готового макроса является встроенная защита «Excel», которая определяет макросы, как потенциально опасные компоненты и блокирует (отключает) их.
Рассмотрим, как снять блокировку выполнения макроса в «Excel».
Необходимо:
• Войти в меню «Файл».
• Далее «Параметры».
• В открывшемся окне выбрать вкладку «Центр управления безопасностью».
• Кликнуть по кнопке «Параметры центра управления безопасностью»
• Выбрать вкладку «Параметры макросов»
• Установить флажок напротив пункта «Включить все макросы…» и нажать «ОК».
Теперь после запуска макросы будут выполняться без проблем.
Как соединить текст из нескольких ячеек Excel не потеряв информацию.
Макрос слияния (сцепки) текста из ячеек в «Excel» без потери данных.
Ранее уже рассказывал о замечательной функции в программе Excel, которая называется «СЦЕПИТЬ».
Функция довольно удобная, не есть у нее один большой недостаток ячейки для сцепки нужно указывать по одной, выделение диапазона не работает или работает некорректно. Читать далее «Как соединить текст из нескольких ячеек Excel не потеряв информацию.»
Как создать программу в «Excel»
Как создать программу в «Excel».
Один из наиболее часто задаваемых вопросов задаваемых начинающими пользователями звучит так: «Как создать программу в «Excel» и возможно ли это сделать в принципе?» Читать далее «Как создать программу в «Excel»»
Генератор хештегов — как сделать своими руками или скачать готовый (хештеги в соцсети)
Как сделать своими руками или скачать готовый генератор хештегов для соц. сетей: youtube, ВК, одноклассники и т.д.
Скачать генератор хештегов.
Скачать генератор хештегов НА Андроид.
Макрос копирования содержимого объектов textbox или combobox в буфер обмена
Макрос копирования содержимого объектов textbox или combobox в буфер обмена.
Порой для копирования информации в программе «Excel» недостаточно воспользоваться пунктом контекстного меню «копировать» или сочетанием клавиш ctrl+C. Читать далее «Макрос копирования содержимого объектов textbox или combobox в буфер обмена»
Запуск макроса кликом по ячейке или при изменении значения ячейки
Запуск макроса изменением значения в ячейке.
Как сделать связанный выпадающий список в «Эксель», зависящий от значения в соседней ячейке.
рассказывалось о том, как реализовать в программе Excel связанные между собой выпадающие списки. Недавно создавая файл со связанными списками столкнулся с проблемкой — при обновлении записи в первой ячейке, от которой зависит список во второй, вторая ячейка остается неизменной, не обнуляет значения. Читать далее «Запуск макроса кликом по ячейке или при изменении значения ячейки»
Как назначить сочетания горячих клавиш написанному макросу в «Word» и «Excel»
Как назначить сочетания горячих клавиш написанному макросу в «Word» и «Excel».
Иногда, написанный макрос для книги «Excel» или «Word» требуется вызывать не нажатием активной кнопки или другим макросом, а вызывать работу макроса сочетанием назначенных пользователем горячих клавиш. Читать далее «Как назначить сочетания горячих клавиш написанному макросу в «Word» и «Excel»»
Как расположить вертикальный список, перенесенный из «Excel» в «Word», в одну строку (горизонтально)
Как расположить вертикальный список, перенесенный из «Excel» в «Word», в одну строку (горизонтально).
Вставить сумму прописью в ячейку таблицы «Excel» — Скачать макрос.
Как вставить сумму прописью в ячейку таблицы «Excel». Скачать готовый макрос.
По какой-то странной бухгалтерской традиции во всех первичных и закрывающих документах требуется прописывать сумму полученных или оплаченных денежных средств прописью. Выписываешь счет — «укажите сумму прописью», закрываешь командировку — «укажите сумму прописью» и т.д. Читать далее «Вставить сумму прописью в ячейку таблицы «Excel» — Скачать макрос.»
Округление значений в коде VBA в Excel. Функции int () и fix().
Как округлять значения переменных в VBA?
Очень часто при создании алгоритмов подсчета тех или иных значений полученные результаты имеют значение десятичной дроби с большим количеством знаков после запятой. Работать с такими данными и отображать их не очень удобно и некрасиво. Читать далее «Округление значений в коде VBA в Excel. Функции int () и fix().»
Макрос для подсчета ячеек в выделенном диапазоне
Подсчёт ячеек в выделенном диапазоне с учетом пустых (незаполненных).
Предположим ситуацию, что у вас есть план объекта, выполненный на координатной сетке, расчерченной в программе Excel.
Как установить надстройку в программе Excel
Инструкция по установке надстройки в программе Excel.
Макрос умножения столбца или строки на коэффициент в одно действие.
Создание простого макроса для перемножения столбца на заданный коэффициент.
Макрос для быстрой замены формул на значения (числа) в выделенных ячейках документа Excel.
Когда удобно менять формулы на значения нажатием горячих клавиш?
Порой бывают ситуации, когда вычисления в отчете выполняются на основании данных полученных из временной промежуточной таблицы. Эту таблицу нужно исключить из отчета, но при ее удалении полученные значения в отчете изменяются, так как «привязаны» к промежуточной таблице (черновику) формулами. Читать далее «Макрос для быстрой замены формул на значения (числа) в выделенных ячейках документа Excel.»
Функция VAL в VBA Excel или как преобразовать TextBox в число (цифру).
Использования функции преобразования текста в число в макросах Excel.
Иногда при написании макросов необходимо производить вычисления или сравнения числовых значений, которые вносятся в поля «TextBox». Существует небольшая проблемка при работе с этими данными – информация из поля «TextBox» воспринимается программой как текстовая и, соответственно, в расчетах не может использоваться. Читать далее «Функция VAL в VBA Excel или как преобразовать TextBox в число (цифру).»
Как поделить таблицу Excel на две колонки для печати на одном листе.
О том, как при помощи несложного макроса VBA в программе «Эксель» можно разместить данные из таблицы в две колонки для распечатки на принтере.
Приведенный в статье макрос является альтернативой опции «колонки» используемой в настройках «разметки страницы» программы Word . Читать далее «Как поделить таблицу Excel на две колонки для печати на одном листе.»
Макрос, позволяющий в ячейках Excel соединить текст по определенным условиям.
О том, как соединить текст из разных ячеек на основании условий.
Очень часто при работе с выгрузками данных из баз приходится упорядочивать и систематизировать информацию, соединять несколько текстов в один. Читать далее «Макрос, позволяющий в ячейках Excel соединить текст по определенным условиям.»
Как сделать кнопку с макросом в программе Excel
О том, как в Excel присвоить (назначить) макрос кнопке, чекбоксу (флажку/галочке) или иным активным элементам.
Одним из первых вопросов, возникающих у начинающих пользователей программы «Эксель», является вопрос о том, как в документе (таблице) создать кнопку (или другой активный элемент) запускающую написанный макрос. Читать далее «Как сделать кнопку с макросом в программе Excel»
Макрос определяющий пустая ли ячейка или заполненная в VBA Excel
Макрос проверки заполнения ячеек.
Периодически при создании различных макросов в VBA Excel возникает потребность в том, чтобы алгоритм макроса самостоятельно определял, пуста ли ячейка или заполнена данными.
Далее приведем несколько простых макросов для определения заполнения ячейки данными и разберем принцип их работы. Фрагменты этих макросов вы можете добывать в свой код для реализации проверки заполнения ячеек. Читать далее «Макрос определяющий пустая ли ячейка или заполненная в VBA Excel»
Макрос выпадающего списка с несколькими значениями в Excel
Ранее в публикациях рассказывалось о том, как создается выпадающий список в ячейках для упрощения внесения данных. Читать далее «Макрос выпадающего списка с несколькими значениями в Excel»
Как написать простой макрос в программе Excel
Написание простейшего макроса в Excel. Самоучитель.
Макрос в «Эксель» — небольшая программка (скрипт) написанная на языке VBA (Visual Basic for Applications) разновидности языка Basic ( Бейсик). Читать далее «Как написать простой макрос в программе Excel»
Источник: ruexcel.ru
MsgBox
В Excel VBA вы можете использовать функцию MsgBox для отображения окна сообщения (как показано ниже):
MsgBox — это не что иное, как диалоговое окно, которое вы можете использовать для информирования своих пользователей, показывая пользовательское сообщение или получая некоторые основные входные данные (такие как Да / Нет или OK / Отмена).
Пока отображается диалоговое окно MsgBox, ваш код VBA останавливается. Вам нужно нажать любую из кнопок в MsgBox, чтобы запустить оставшийся код VBA.
Примечание: в этом уроке я буду использовать слова «окно сообщения» и MsgBox взаимозаменяемо. При работе с Excel VBA вам всегда нужно использовать MsgBox.
Анатомия VBA MsgBox в Excel
Окно сообщения состоит из следующих частей:
- Title — заголовок: обычно используется для отображения содержания окна сообщения. Если вы ничего не указали, отображается имя приложения, в данном случае Microsoft Excel.
- Prompt — подсказка: это сообщение, которое вы хотите отобразить. Вы можете использовать это пространство, чтобы написать пару строк или даже отобразить таблицы / данные здесь.
- Button(s) — кнопка(-и): хотя кнопка «ОК» является кнопкой по умолчанию, ее можно настроить таким образом, чтобы отображать такие кнопки, как «Да / Нет»; «Да / Нет / Отмена», «Повторить» / «Пропустить» и т.д.
- Close Icon — значок закрытия: Вы можете закрыть окно сообщения, нажав на значок закрытия.
Синтаксис функции VBA MsgBox
Как я уже упоминал, MsgBox является функцией и имеет синтаксис, аналогичный другим функциям VBA.
MsgBox( prompt [, buttons ] [, title ] [, helpfile, context ] )
- prompt — это обязательный аргумент. Он отображает сообщение, которое вы видите в MsgBox. В нашем примере текст «Это образец MsgBox» — это «подсказка». В приглашении можно использовать до 1024 символов, а также использовать его для отображения значений переменных. Если вы хотите показать подсказку, состоящую из нескольких строк, вы можете сделать это также (подробнее об этом позже в этом руководстве).
- [buttons ] — определяет, какие кнопки и значки отображаются в MsgBox. Например, если я использую vbOkOnly, на нем будет отображаться только кнопка OK, а если я использую vbOKCancel, на нем будут отображаться кнопки OK и Отмена. Я расскажу о различных видах кнопок позже в этом уроке.
- [title] — здесь вы можете указать заголовок в диалоговом окне сообщения. Отображается в строке заголовка MsgBox. Если вы ничего не укажете, будет показано название приложения.
- [helpfile] — вы можете указать файл справки, к которому можно получить доступ, когда пользователь нажимает кнопку «Справка». Кнопка справки появится только тогда, когда вы используете для нее код кнопки. Если вы используете файл справки, вам также необходимо указать аргумент context.
- [context] — это числовое выражение, которое является номером контекста справки, назначенным соответствующему разделу справки.
Если вы новичок в концепции Msgbox, не стесняйтесь игнорировать аргументы [helpfile] и [context]. Они редко используются.
Примечание. Все аргументы в квадратных скобках являются необязательными. Только аргумент «подсказка» является обязательным.
Константы кнопки Excel VBA MsgBox (примеры)
В этом разделе я расскажу о различных типах кнопок, которые вы можете использовать с VBA MsgBox.
Прежде чем я покажу вам код VBA для него и то, как выглядит MsgBox, вот таблица, в которой перечислены все различные константы кнопок, которые вы можете использовать.
Константа кнопки | Описание |
vbOKOnly | Показывает только кнопку ОК |
vbOKCancel | Показывает кнопки ОК и Отмена |
vbAbortRetryIgnore | Показывает кнопки «Прервать», «Повторить» и «Игнорировать» |
vbYesNo | Показывает кнопки Да и Нет |
vbYesNoCancel | Показывает кнопки Да, Нет и Отмена |
vbRetryCancel | Показывает кнопки «Повторить» и «Отменить» |
vbMsgBoxHelpButton | Показывает кнопку справки. Чтобы это работало, вам нужно использовать аргументы справки и контекста в функции MsgBox |
vbDefaultButton1 | Делает первую кнопку по умолчанию. Вы можете изменить номер, чтобы изменить кнопку по умолчанию. Например, vbDefaultButton2 делает вторую кнопку по умолчанию |
Примечание. Просматривая примеры создания различных кнопок, вы можете задаться вопросом, какой смысл использовать эти кнопки, если они не влияют на код.
Влияют! В зависимости от выбора вы можете кодировать то, что вы хотите, чтобы код делал. Например, если вы выберете «ОК», код должен продолжиться, а если вы нажмете «Отмена», код должен прекратиться. Это можно сделать с помощью переменных и присвоения значения окна сообщения переменной. Мы рассмотрим это в последующих разделах этого урока.
Теперь давайте рассмотрим несколько примеров того, как различные кнопки могут отображаться в MsgBox и как они выглядят.
Кнопки MsgBox — vbOKOnly (по умолчанию)
Если вы используете только приглашение и не указываете ни один из аргументов, вы получите окно сообщения по умолчанию, как показано ниже:
Ниже приведен код, который выдаст это окно сообщения:
Sub DefaultMsgBox() MsgBox «This is a sample box» End Sub
Обратите внимание, что текстовая строка должна быть в двойных кавычках.
Вы также можете использовать постоянную кнопку vbOKOnly, но даже если вы ничего не указали, она используется по умолчанию.
Кнопки MsgBox — ОК и Отмена
Если вы хотите показать только ОК и кнопку Отмена, вам нужно использовать константу vbOKCancel
Sub MsgBoxOKCancel() MsgBox «Want to Continue?», vbOKCancel End Sub
Кнопки MsgBox — Отмена, Повтор и Игнорирование
Вы можете использовать константу vbAbortRetryIgnore для отображения кнопок «Отмена», «Повторить» и «Игнорировать».
Sub MsgBoxAbortRetryIgnore() MsgBox «What do you want to do?», vbAbortRetryIgnore End Sub
Кнопки MsgBox — Да и Нет
Вы можете использовать константу vbYesNo для отображения кнопок Да и Нет.
Sub MsgBoxYesNo() MsgBox «Should we stop?», vbYesNo End Sub
Кнопки MsgBox — Да, Нет и Отмена
Вы можете использовать константу vbYesNoCancel для отображения кнопок «Да», «Нет» и «Отмена».
Sub MsgBoxYesNoCancel() MsgBox «Should we stop?», vbYesNoCancel End Sub
Кнопки MsgBox — повторить попытку и отменить
Вы можете использовать константу vbRetryCancel для отображения кнопок «Повторить» и «Отмена».
Sub MsgBoxRetryCancel() MsgBox «What do you want to do next?», vbRetryCancel End Sub
Кнопки MsgBox — Кнопка справки
Вы можете использовать константу vbMsgBoxHelpButton для отображения кнопки справки. Вы можете использовать его с другими константами кнопок.
Sub MsgBoxRetryHelp() MsgBox «What do you want to do next?», vbRetryCancel + vbMsgBoxHelpButton End Sub
Обратите внимание, что в этом коде мы объединили две разные константы кнопки (vbRetryCancel + vbMsgBoxHelpButton). Первая часть показывает кнопки «Повторить» и «Отмена», а вторая часть показывает кнопку «Справка».
MsgBox Buttons — Настройка кнопки по умолчанию
Вы можете использовать константу vbDefaultButton1 для установки первой кнопки по умолчанию. Это означает, что кнопка уже выбрана, и если вы нажмете Enter, она выполнит эту кнопку.
Ниже приведен код, который установит в качестве кнопки по умолчанию вторую кнопку (кнопка «Нет»).
Sub MsgBoxOKCancel() MsgBox «What do you want to do next?», vbYesNoCancel + vbDefaultButton2 End Sub
В большинстве случаев крайняя левая кнопка является кнопкой по умолчанию. Вы можете выбрать другие кнопки, используя vbDefaultButton2, vbDefaultButton3 и vbDefaultButton4.
Константы значков Excel VBA MsgBox (примеры)
Помимо кнопок, вы также можете настроить значки, отображаемые в диалоговом окне MsgBox. Например, у вас может быть красный критический значок или синий информационный значок.
Ниже приведена таблица со списком кода, который будет отображать соответствующий значок.
Константа значка | Описание |
vbCritical | Показывает значок критического сообщения |
vbQuestion | Показывает значок вопроса |
vbExclamation | Показывает значок предупреждения |
vbInformation | Показывает значок информации |
Иконки MsgBox — Критические
Если вы хотите показать критический значок в своем MsgBox, используйте константу vbCritical. Вы можете использовать ее вместе с другими константами кнопки (поставив знак + между кодами).
Например, ниже приведен код, который будет показывать кнопку ОК по умолчанию с критическим значком.
Sub MsgBoxCriticalIcon() MsgBox «This is a sample box», vbCritical End Sub
Если вы хотите показать критический значок с кнопками Да и Нет, используйте следующий код:
Sub MsgBoxCriticalIcon() MsgBox «This is a sample box», vbYesNo + vbCritical End Sub
Иконки MsgBox — Вопрос
Если вы хотите показать иконку вопроса в своем MsgBox, используйте константу vbQuestion.
Sub MsgBoxQuestionIcon() MsgBox «This is a sample box», vbYesNo + vbQuestion End Sub
Иконки MsgBox — Восклицательный знак
Если вы хотите показать восклицательный значок в вашем MsgBox, используйте константу vbExclamation.
Sub MsgBoxExclamationIcon() MsgBox «This is a sample box», vbYesNo + vbExclamation End Sub
Иконки MsgBox — Информация
Если вы хотите отобразить информационный значок в вашем MsgBox, используйте константу vbInformation.
Sub MsgBoxInformationIcon() MsgBox «This is a sample box», vbYesNo + vbInformation End Sub
Настройка заголовка и приглашения в MsgBox
При использовании MsgBox вы можете настроить заголовок и сообщения подсказок.
До сих пор в примерах, которые мы видели, использовался Microsoft Excel в качестве заголовка. Если вы не указали аргумент title, MsgBox автоматически использует заголовок приложения (в данном случае это был Microsoft Excel).
Вы можете настроить заголовок, указав его в коде, как показано ниже:
Sub MsgBoxInformationIcon() MsgBox «Do you want to continue?», vbYesNo + vbQuestion, «Step 1 of 3» End Sub
Точно так же вы также можете настроить сообщение подсказки.
Вы также можете добавить разрывы строк в сообщении подсказки.
В приведенном ниже коде я добавил разрыв строки, используя «vbNewLine».
Sub MsgBoxInformationIcon() MsgBox «Do you want to continue?» «Click Yes to Continue», vbYesNo + vbQuestion, «Step 1 of 3» End Sub
Вы также можете использовать символ возврата каретки — Chr (13) или перевод строки — Chr (10), чтобы вставить новую строку в сообщение с подсказкой.
Обратите внимание, что вы можете добавить новую строку только к сообщению, а не к заголовку.
Присвоение значения MsgBox переменной
До сих пор мы видели примеры, где мы создавали окна сообщений и настраивали кнопки, значки, заголовок и приглашение.
Однако нажатие кнопки ничего не сделало.
С помощью функции MsgBox в Excel вы можете решить, что вы хотите делать, когда пользователь нажимает определенную кнопку. И это возможно, поскольку каждая кнопка имеет значение, связанное с ней.
Поэтому, если я нажимаю кнопку «Да», функция MsgBox возвращает значение (6 или константа vbYes), которое я могу использовать в своем коде. Аналогично, если пользователь выбирает кнопку «Нет», он возвращает другое значение ((7 или константа vbNo)), которое я могу использовать в коде.
Ниже приведена таблица, которая показывает точные значения и константу, возвращаемую функцией MsgBox. Вам не нужно запоминать их, просто помните об этом, и вы можете использовать константы, которые проще в использовании.
При нажатии кнопки | Константа | Значение |
Ok | vbOk | 1 |
Cancel | vbCancel | 2 |
Abort | vbAbort | 3 |
Retry | vbRetry | 4 |
Ignore | vbIgnore | 5 |
Yes | vbYes | 6 |
No | vbNo | 7 |
Теперь давайте посмотрим, как мы можем контролировать макрос-код VBA в зависимости от того, на какую кнопку нажимает пользователь.
В приведенном ниже коде, если пользователь нажимает кнопку «Да», отображается сообщение «Вы нажали кнопку «Да», а если пользователь нажимает кнопку «Нет», отображается сообщение «Вы нажали кнопку «Нет»».
Sub MsgBoxInformationIcon() Result = MsgBox(«Do you want to continue?», vbYesNo + vbQuestion) If Result = vbYes Then MsgBox «You clicked Yes» Else: MsgBox «You clicked No» End If End Sub
В приведенном выше коде я присвоил значение функции MsgBox переменной Result. Когда вы нажимаете кнопку «Да», переменная Result получает константу vbYes (или число 6), а когда вы нажимаете «Нет», переменная Result получает константу vbNo (или число 7).
Затем я использовал конструкцию If Then Else, чтобы проверить, содержит ли переменная Result значение vbYes. Если это так, отображается запрос «Вы нажали Да», в противном случае — «Вы нажали Нет».
Вы можете использовать ту же концепцию для запуска кода, если пользователь нажимает Да, и выход из подпрограммы, когда он нажимает Нет.
Примечание. Когда вы присваиваете выход MsgBox переменной, вы должны поместить аргументы функции MsgBox в круглые скобки. Например, в строке Result = MsgBox («Хотите продолжить?», VbYesNo + vbQuestion) вы можете видеть, что аргументы находятся в скобках.
Если вы хотите в дальнейшем углубиться в функцию Message Box, вот официальный документ по ней.
Источник: excelpedia.ru
Урок 1 по VBA — знакомство с Visual Basic for Applications
Макросы на VBA
Автор Coding На чтение 7 мин Просмотров 150 Опубликовано 07.10.2013
В это статье мы кратко познакомимся с языком VBA, который позволяет создавать макросы в программных продуктах Microsoft Office. Макросы – некий программный код, который позволяет реализовывать за вас поставленную задачу. В отличии от прикладных программ, макросы VBA как таковые не могут выполняться самостоятельно. Язык VBA – Visual Basic for Applications является родственником таких языков как VBScript, Visual Basic или простой Basic. Синтаксис и общие правила программирования практически идентичны.
По сути, зная язык VBScript сервера Windows Script Host, вы с легкостью освоите все премудрости VBA.
Отличия VBA от VBScript
Графический интерфейс – редактор VBA предоставляет минимальный набор объектов для создания графического интерфейса. Вы можете добавить в проект новую форму и поместить на нее нужные объекты, например, список, кнопку, текстовое поле и так далее. В VBScript для этих целей нужно прибегать к помощи стороннего объекта WindowSystemObject.
Внешние объекты – оба языка позволяют подключать функциональные возможности внешних объектов. Объект – в данном контексте это внешний библиотечный файл с набором методов (функций) и свойств (переменных). Однако, если вы создаете макрос в Word, то объект Word.Application будет доступен автоматически, если макрос работает в документе Excel, то автоматически доступен компонент Excel.Application. В Windows Script Host сценариях эти объекты нужно подключать самостоятельно (сделать ссылку).
Обработка событий – в VBA компоненты формы поддерживают не только методы и свойств, но и события, например, нажатие кнопки мыши. В WSH обработка событий не предусмотрена по определению, так как, там нужно отдельно подключать классы для создания графического интерфейс.
Практическое применение VBA
И так, открыв любой документ Microsoft Office, например, Word, мы может вызвать встроенный редактор Visual Basic (комбинация клавиш Alt + F11) и приступить к созданию макроса. Как упоминалось выше, в макросах можно подключать функциональные возможности внешних объектов, тем самым, получать доступ к элементам операционной системы, например, файловая система, реестр и так далее. Желательно, что бы в настройках был отключен автоматический запуск макроса при открытии документа, дабы дырявый или зловредный код не натворил лиха.
Однако, на сегодняшний момент, макросы и язык VBA как элементы администрирования теряют свое преимущество. Тот же Microsoft Access, который предназначен для работы с базами данных также практически не используется. Более актуальным является пакет 1С.
Общие синтаксические принципы языка VBA
- Регистр не играет роли – вы можете прописать оператор как в верхнем, так и в нижнем регистре, или вообще в вперемешку, например, dim, DIM, Dim, разницы нет.
- Комментарии – для комментирования строки, перед ней прописывается одинарная кавычка или ключевое слово REM.
- Максимальная длина любого имени (будь то имя переменной, константы или процедуры) составляет 255 знаков.
- В отличии от JavaScript, Jscript или С языков, в VBA в конце строки с операторами не нужно ставить запятой.
- Двоеточие – чтобы не прописывать каждый оператор в отдельной строке, их можно с помощью двоеточия прописать в одну строку, например: MsgBox «Строка1» : MsgBox «Строка2»
- Перенос операторов – если строка с операторами слишком длинная, то ее можно разделить на несколько при помощи символа подчеркивания и знака «строка»
Для демонстрации работы с макросами напишем такой пример. Откройте документ Microsoft Word и запустите редактор Visual Basic. Вам нужно создать новую форму и новый модуль (макрос). Цель – решение квадратного уравнения с изменяемыми значениями.
На поверхность формы надо добавить три полосы прокрутки и две текстовые метки. В редакторе кода для формы пропишите:
Option Explicit Sub Get_Result() Dim MyA As Byte, MyB As Byte, MyC As Byte Dim D, x, x1, x2, msg MyA = ScrollBar1.Value: MyB = ScrollBar2.Value: MyC = ScrollBar3.Value Label1.Caption = MyA x*x + » _ «x + » _ » = 0″ ‘ находим дискриминант D = MyB ^ 2 — 4 * MyA * MyC ‘Если дискриминант равен нулую — одно решение If D = 0 Then x = MyB / (2 * MyA) msg = «Уравнение имеет одно решение, x ровно: » 0 Then x1 = (-MyB + Sqr(D)) / (2 * MyA) x2 = (-MyB — Sqr(D)) / (2 * MyA) msg = «Уравнение имеет два решения» «x1 ровно: » vbCrLf x2 ровно: » Нет решения (комплексные числа)» End If Label2.Caption = msg End Sub Private Sub ScrollBar1_Change() Call Get_Result End Sub Private Sub ScrollBar2_Change() Call Get_Result End Sub Private Sub ScrollBar3_Change() Call Get_Result End Sub Private Sub UserForm_Initialize() Dim MyA As Byte, MyB As Byte, MyC As Byte ‘ параметры полос прокрутки ScrollBar1.Min = 1 ScrollBar1.Max = 20 ScrollBar2.Min = 1 ScrollBar2.Max = 30 ScrollBar3.Min = 1 ScrollBar3.Max = 40 ‘ параметры первого текстового поля Label1.FontSize = 15 Label1.ForeColor = H6400 MyA = ScrollBar1.Value: MyB = ScrollBar2.Value: MyC = ScrollBar3.Value Label1.Caption = MyA x*x + » _ «x + » _ » = 0″ End Sub
Option ExplicitSub Get_Result()Dim MyA As Byte, MyB As Byte, MyC As ByteDim D, x, x1, x2, msg MyA = ScrollBar1.Value: MyB = ScrollBar2.Value: MyC = ScrollBar3.Value Label1.Caption = MyA x*x + » _ «x + » _ » = 0″‘ находим дискриминантD = MyB ^ 2 — 4 * MyA * MyC’Если дискриминант равен нулую — одно решениеIf D = 0 Then x = MyB / (2 * MyA) msg = «Уравнение имеет одно решение, x ровно: » 0 Then x1 = (-MyB + Sqr(D)) / (2 * MyA) x2 = (-MyB — Sqr(D)) / (2 * MyA) msg = «Уравнение имеет два решения» «x1 ровно: » vbCrLf x2 ровно: » Нет решения (комплексные числа)»End If Label2.Caption = msgEnd SubPrivate Sub ScrollBar1_Change() Call Get_ResultEnd SubPrivate Sub ScrollBar2_Change() Call Get_ResultEnd SubPrivate Sub ScrollBar3_Change() Call Get_ResultEnd SubPrivate Sub UserForm_Initialize()Dim MyA As Byte, MyB As Byte, MyC As Byte ‘ параметры полос прокрутки ScrollBar1.Min = 1 ScrollBar1.Max = 20 ScrollBar2.Min = 1 ScrollBar2.Max = 30 ScrollBar3.Min = 1 ScrollBar3.Max = 40 ‘ параметры первого текстового поля Label1.FontSize = 15 Label1.ForeColor = H6400 MyA = ScrollBar1.Value: MyB = ScrollBar2.Value: MyC = ScrollBar3.Value Label1.Caption = MyA x*x + » _ «x + » _ » = 0″End Sub
Код VBA предельно прост, в процедуре Get_Result происходит проверка текущих значений для полос прокрутки, далее эти значения подставляются в формулу для нахождения дискриминанта. Результат решения будет выводиться на поверхности формы во вторую текстовую метку. Аналогичный пример я разбирал для языка VBScript в этой статье.
Источник: scriptcoding.ru