Диалог Vba Excel да нет

Обновлено: 21.11.2024

Двоичные ответы "да" и "нет" часто дают вам всю необходимую информацию от ваших пользователей. Встроенный VBA MsgBox с параметрами «Да» или «Нет» предназначен именно для этого сценария. Однако есть одно предостережение относительно двоичного выбора, которое мы также рассмотрим в этом руководстве.

Сообщение VBA

Встроенная в VBA функция MsgBox предоставляет метод для пользовательского ввода в предопределенном диалоговом окне. Для этой цели вы можете создавать свои собственные пользовательские формы, и если вы разрабатываете брендированную панель инструментов профессионального уровня, я бы порекомендовал это сделать. Создав пользовательскую форму, вы можете указать, когда показывать ее в своей программе.

Большинству приложений не нужны полностью настраиваемые пользовательские формы для ответов на простые вопросы типа "да/нет". Если вам просто нужно простое и быстрое решение, лучшим вариантом будут встроенные диалоговые окна VBA MsgBox. Они придают всплывающему окну естественный вид, поскольку MsgBox – это встроенная функция VBA, и вы знаете, что визуальные эффекты будут работать с первой попытки.

Окна сообщений VBA принимают 5 параметров, но все, кроме первого, являются необязательными:

— это текст, который появляется во всплывающем окне. Поскольку в этом руководстве основное внимание уделяется вопросам «да» или «нет», мы предполагаем, что ваше приглашение будет иметь структуру, которая требует ответа «да» или «нет».

  • Правильно ли введено имя?
  • Есть 87 000 записей; Вы хотите продолжить?

В поле "Подсказка" можно поместить любую строку. Часто вы будете использовать конкатенацию с переменной, как мы продемонстрировали в нашей статье о конкатенации VBA.

Если вы хотите, чтобы ваши пользователи могли выбрать Да или Нет, вы также должны передать параметр Кнопки. Введите vbYesNo в параметре Buttons, чтобы отобразить кнопки Да и Нет.

Давайте попробуем с этим кодом:

Совет. Вы можете использовать непосредственное окно VBA (сочетание клавиш Ctrl+G из VBE), чтобы быстро запустить этот макрос.

Теперь пользователь может решить, следует ли действовать сразу или отложить ответ. Обратите внимание, есть только два возможных варианта. Значок "X" в правом верхнем углу окна отключен, поэтому пользователь не может его щелкнуть.

Создавайте мощные макросы с помощью нашего бесплатного комплекта разработчика VBA

Такой макрос легко скопировать и вставить, но создать его самостоятельно сложнее. Чтобы помочь вам создавать макросы, подобные этому, мы создали бесплатный комплект разработчика VBA и написали Большую книгу макросов Excel VBA, полную сотен готовых макросов, которые помогут вам освоить файловый ввод-вывод, массивы, строки и многое другое. скопируйте ниже.

vbYesNo или vbYesNoCancel

Когда вы запустили приведенный выше код, вы, вероятно, заметили, что из диалогового окна нельзя нажать «X». Пользователь должен ответить Да или Нет, и у него нет альтернативы. Единственный другой выбор — отсрочить процесс, не выбирая «Да» или «Нет», но в конечном итоге ответ должен быть выбран. Они также могут уничтожить экземпляр Excel, а затем пожаловаться, что «Да» и «Нет» подходят не для всех сценариев…

Итак, если вы хотите, чтобы ваши пользователи принимали бинарное решение "Да Нет", вы можете использовать vbYesNo в качестве параметра кнопок. В большинстве случаев это приемлемо. Если вы проверяете содержимое поля ввода таким образом, пользователь может ответить Нет на приглашение, и код может снова получать ввод до тех пор, пока не будет получен ответ Да. Кроме того, ответ Нет может полностью остановить выполнение и выйти из подпрограммы.

Передача vbYesNoCancel в параметр Buttons предоставляет пользователю третий вариант. Он добавляет кнопку Отмена и активирует значок «X» в правом верхнем углу диалогового окна. Нажатие «X» делает то же самое, что и нажатие кнопки «Отмена». Иногда пользователям удобнее нажать «X», чем «Отмена», поэтому доступны оба варианта.

Чтение вывода функции MsgBox

В VBA у подпрограмм нет выходного значения, а у функций есть. Поскольку MsgBox — это функция, она также имеет выходное значение. Интуитивно это имеет смысл: если бы не было выходных значений, как программа узнала бы, какой выбор был сделан?

Выходные значения не были зафиксированы в кодах, упомянутых выше. VBA получает выбранное значение (Да или Нет (или Отмена)), сохраняет его в памяти на короткое время, затем завершает подпрограмму и отбрасывает значение.

Чтобы сохранить значение, назначьте функцию переменной. Код (принудительный ввод целых чисел) будет выглядеть следующим образом:

Обязательно используйте круглые скобки для инкапсуляции параметров функции MsgBox в правой части назначения.

Ценность вариантов «Да», «Нет» и «Отмена»

Вывод собственной функции MsgBox не является ни строкой, ни двоичным значением, как можно было бы предположить, а целым числом. Это облегчает программную обработку, и проще запомнить всего три значения, чем точную строку (это «Да» или «да», или «y», или «YES»?). Это также позволяет MsgBox иметь несколько выходных данных, отличных от «Да» и «Нет» (для которых будет достаточно логического значения).

  • Да = 6 = vbДа
  • Нет = 7 = vbNo
  • Отмена = 2 = vbОтмена

Использование «X» в версии vbYesNoCancel также дает 2. Технически параметр vb Buttons сам по себе также представляет числовое значение, но гораздо проще использовать правильные имена vb ( vbYesNo и vbYesNoCancel .

Захватив выходные данные функции MsgBox, как мы это сделали в приведенном выше примере, вы можете использовать userResponse так же, как и любое другое целое число. Вы можете сравнить его значение в операторах if, использовать его в блоках Select Case или даже складывать числа вместе, если хотите.

Функциональное программирование с помощью MsgBox

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

Например, вместо использования этого блока кода:

Можно было бы сократить его примерно так:

Вам никогда не придется думать о том, как вводить выходное значение ( целое число , логическое значение и т. д.).

Удобно, если вы пишете сжатую форму и у вас включен Intellisense, вы даже получите правильные имена vb потенциальных выходных данных функции MsgBox.

Вы можете использовать эти имена vb в своих условных операторах вместо того, чтобы запоминать целые числа, если хотите. Вот пример:

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

VBA MsgBox Да Нет Примеры в этом руководстве предоставляют быстрые диалоговые окна для подобных сценариев без необходимости создавать собственные пользовательские формы с нуля.

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

Готовы делать больше с VBA?
Мы собрали гигантский PDF-файл с более чем 300 готовыми макросами и хотим, чтобы вы получили его бесплатно. Введите свой адрес электронной почты ниже, и мы вышлем вам копию вместе с нашим комплектом разработчика VBA, полным советов, приемов и ярлыков VBA.

Прежде чем мы начнем, я хочу сообщить вам, что мы разработали набор шпаргалок по VBA, чтобы вам было проще писать лучшие макросы. Мы включили более 200 советов и 140 примеров макросов, поэтому в них есть все, что вам нужно знать, чтобы стать лучшим программистом VBA.

Эта статья была написана Кори Сарвером, автором статей для блога VBA Tutorials. Посетите его в LinkedIn и на его личной странице.

В VBA, используя окно сообщения, мы можем создать окно сообщения "да-нет", которое используется для записи пользовательского ввода на основе нажатия кнопки "да" или "нет". Синтаксис для создания окна сообщения "да-нет" следующий: переменная = MsgBox("Текст", vbQuestion + vbYesNo + vbDefaultButton2, "Заголовок окна сообщения"), где переменная должна быть объявлена ​​как целое число.

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

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

Как работать с ответом MsgBox Да/Нет?

Вы можете скачать этот шаблон Excel для окна сообщений VBA «Да или нет» здесь — Шаблон окна сообщений VBA «Да или нет» для Excel

Например, взгляните на приведенный ниже код.

Код:

Пояснение:

В приведенном выше примере переменная объявлена ​​как String, т.е.

В следующей строке мы присвоили значение через окно сообщения с вопросом «Вы хотите скопировать?».

Теперь оператор IF оценивает ответ, полученный через окно сообщения. Если в окне сообщения отображается vbYes, диапазон от A1 до A2 будет скопирован и вставлен в ячейку C1.

Если в окне сообщения отображается ответ "Нет", диапазон от A1 до A2 будет скопирован и вставлен в ячейку E1.

Хорошо, я ввел несколько значений в ячейки A1 и A2.

Теперь я запущу код с помощью клавиши F5 или через опцию запуска, передо мной появится окно сообщения и запросит мой ответ.

Если я нажму «Да», он скопирует диапазон от A1 до A2 и вставит в ячейку C1. Сейчас я нажму Да и увижу результат.

Значит, задание выполнено, если ответ ДА.

Теперь я снова запущу код.

На этот раз я выберу Нет и посмотрю, что произойдет.

Да, он выполнил задачу, указанную в коде, т.е.

Приведенный ниже код скроет все листы, кроме активного листа, если ответ положительный.

Код:

Приведенный выше код скроет все рабочие листы, кроме листа, на котором мы сейчас находимся, если в окне сообщения будет ответ ДА.

Если ответ из окна сообщения НЕТ, будет отображаться окно сообщения, говорящее: «Вы решили не скрывать листы».

Аналогично приведенный ниже код отобразит лист, если ответ будет "Да".

Код:

Это работает точно так же, как код скрытия листа; если да, он будет отображаться. Если нет, он не будет отображаться.

Рекомендуемые статьи

Это руководство по работе с окном сообщений VBA. Здесь мы обсуждаем, как создать ответ «Да» или «Нет» в Excel VBA с помощью MsgBox, а также практические примеры и загружаемый шаблон Excel. Ниже вы можете найти несколько полезных статей по Excel VBA –

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

Заинтересованы в разработке решений, расширяющих возможности Office на различных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любые технологии веб-программирования, такие как HTML5, JavaScript, CSS3 и XML.

Синтаксис

MsgBox (приглашение, [ кнопки, ] [ название, ] [ файл справки, контекст ])

Синтаксис функции MsgBox имеет следующие именованные аргументы:

< /th>
Часть Описание
запрос Обязательный. Строковое выражение, отображаемое как сообщение в диалоговом окне. Максимальная длина приглашения составляет примерно 1024 символа, в зависимости от ширины используемых символов. Если приглашение состоит из нескольких строк, вы можете разделить строки с помощью символа возврата каретки (Chr(13)), символа перевода строки (Chr(10)) или символа возврата каретки — перевода строки. комбинация (Chr(13) и Chr(10)) между строками.
кнопки Необязательно. Числовое выражение, представляющее собой комбинацию значений, указывающих количество и тип отображаемых кнопок, используемый стиль значков, идентификатор кнопки по умолчанию и модальность окна сообщения. Если опущено, значение по умолчанию для кнопок равно 0.
title Необязательно. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если вы опустите название, имя приложения будет помещено в строку заголовка.
файл справки Необязательно . Строковое выражение, определяющее файл справки, который следует использовать для предоставления контекстно-зависимой справки для диалогового окна. Если указан файл справки, необходимо также указать контекст.
< em>контекст Необязательно. Числовое выражение, представляющее собой номер контекста справки, присвоенный соответствующему разделу справки автором справки. Если указан контекст, необходимо также указать файл справки.

Настройки

< td style="text-align: left;">Четвертая кнопка по умолчанию.
Константа Значение Описание
vbOKOnly 0 Отображать только кнопку OK.
vbOKCancel 1 Отображать кнопки OK и Cancel.
vbAbortRetryIgnore 2 Отобразить кнопки "Прервать", "Повторить" и "Игнорировать".
vbYesNoCancel 3 Отображать кнопки "Да", "Нет" и "Отмена".
vbYesNo 4 Отображать кнопки "Да" и "Нет" .
vbRetryCancel 5 Показать кнопки "Повторить попытку" и "Отменить".
vbCritical 16 Отображать значок критического сообщения.
vbQuestion 32 Отображать значок запроса с предупреждением.
vbExclamation 48 Отображать значок предупреждающего сообщения.
vbInformation 64 Отобразить значок информационного сообщения.
vbDefaultButton1 0 Первая кнопка по умолчанию.
vbDefaultButton2 256 Вторая кнопка по умолчанию.
vbDefaultButton3 512 Третья кнопка по умолчанию.
vbDefaultButton4 768
vbApplicationModal 0 Модаль приложения; пользователь должен ответить на окно сообщения, прежде чем продолжить работу в текущем приложении.
vbSystemModal 4096 System modal; все приложения приостанавливаются до тех пор, пока пользователь не ответит на окно сообщения.
vbMsgBoxHelpButton 16384 Добавляет кнопку справки в окно сообщения.
vbMsgBoxSetForeground 65536 Определяет окно окна сообщения как окно переднего плана .
vbMsgBoxRight 524288 Текст выровнен по правому краю.
vbMsgBoxRtlReading 1048576 Указывает, что текст должен отображаться справа налево в еврейской и арабской системах.

Первая группа значений (0-5) описывает количество и тип кнопок, отображаемых в диалоговом окне; вторая группа (16, 32, 48, 64) описывает стиль иконок; третья группа (0, 256, 512) определяет, какая кнопка по умолчанию; и четвертая группа (0, 4096) определяет модальность окна сообщения. При объединении чисел для создания окончательного значения аргумента buttons используйте только одно число из каждой группы.

Эти константы определяются Visual Basic для приложений. В результате имена можно использовать в любом месте вашего кода вместо фактических значений.

Возвращаемые значения

Константа Значение Описание
vbOK 1 ОК
vbCancel< /td> 2 Отмена
vbAbort 3 Прервать
vbRetry 4 Повторить попытку
vbIgnore 5 Игнорировать
vbYes 6 Да
vbNo 7 Нет

Примечания

Если указаны и файл справки, и контекст, пользователь может нажать F1 (Windows) или HELP (Macintosh), чтобы просмотреть раздел справки, соответствующий контексту. Некоторые ведущие приложения, например Microsoft Excel, также автоматически добавляют в диалоговое окно кнопку "Справка".

Если в диалоговом окне отображается кнопка "Отмена", нажатие клавиши ESC имеет тот же эффект, что и нажатие кнопки "Отмена". Если диалоговое окно содержит кнопку «Справка», для диалогового окна предоставляется контекстно-зависимая справка. Однако значение не возвращается, пока не будет нажата одна из других кнопок.

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

Пример

В этом примере используется функция MsgBox для отображения сообщения о критической ошибке в диалоговом окне с кнопками "Да" и "Нет". Кнопка «Нет» указана как ответ по умолчанию. Значение, возвращаемое функцией MsgBox, зависит от кнопки, выбранной пользователем. В этом примере предполагается, что DEMO.HLP — это файл справки, содержащий раздел с номером контекста справки, равным 1000 .

См. также

Поддержка и обратная связь

Есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы об Office VBA, чтобы узнать, как получить поддержку и оставить отзыв.

В этой статье мы увидим схему окна сообщений Excel VBA Да/Нет. Окно сообщений в VBA используется для просмотра вывода и любого сообщения, связанного с процессом, который мы делаем. Окно сообщения легко вставить в любой код VBA. Но что сложно, так это получить окно сообщения с кнопками ДА и НЕТ. Все мы видели такие коробки, когда пытаемся закрыть какой-либо файл, не сохраняя его. В этом случае окна выдают нам предупреждение с вопросом «Хотите ли вы сохранить этот файл?» и с помощью 2 кнопок ДА и НЕТ или ОК и ОТМЕНА. Этот тип ящиков мы можем создать в VBA. Эти окна сообщений хороши тем, что мы всегда будем получать оповещения, когда находимся на определенных этапах, когда нам нужно выполнить эту задачу или использовать отображаемые значения.

Как работать с окном сообщения «Да/Нет» в Excel VBA?

Мы узнаем, как работать с окном сообщения "Да/Нет" в Excel, используя код VBA.

Оценка, Hadoop, Excel, мобильные приложения, веб-разработка и многое другое.

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

Шаг 1. Откройте модуль из меню «Вставка», как показано ниже.

Шаг 2: Напишите подпроцедуру в имени выполняемой операции.

Код:

Шаг 3: Теперь выберите функцию MsgBox и напишите в ней любое сообщение в кавычках.

Код:

Шаг 4. После этого запустите код, нажав клавишу F5 или кнопку воспроизведения. Мы получим окно сообщения с сообщением «VBA Message Box». И если нажать на Ok, то мы выйдем из него.

Шаг 5. Теперь мы хотим добавить окно сообщения с кнопками ДА и НЕТ. Для этого снова создайте новую подпроцедуру или мы можем использовать то же самое. И снова используйте функцию MsgBox с новым сообщением. Вы можете выбрать любое другое сообщение.

Код:

Шаг 6. Предположим, мы сохранили несохраненный файл, поэтому мы ожидаем сообщения такого типа, как показано ниже.

Код:

Шаг 7. Теперь, чтобы вставить настроенное сообщение в VBA, нам нужно использовать слово «vb», за которым следует тип кнопок, которые нам нужны.

Код:

Шаг 8. Теперь мы ожидаем получить кнопки ДА и НЕТ в окне сообщения. Запустите код, нажав клавишу F5 или нажав кнопку воспроизведения. Здесь мы видим окно сообщения с кнопками ДА и НЕТ.

Нажатие на любую опцию приведет к выходу из кода.

Давайте посмотрим на другой тип окна сообщения ДА НЕТ. Этот тип сообщения мы видели. Предположим, если мы загружаем файл. Из-за какой-то ошибки файл не может быть загружен полностью. Здесь мы можем создать такое окно сообщения. Давайте выполним следующие шаги.

Шаг 1. Напишите подпроцедуру для окна сообщения VBA.

Код:

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

Код:

Шаг 3. В таких случаях мы можем либо прервать загрузку, либо проигнорировать сообщение, либо повторить попытку загрузки файла. Поэтому напишите такие имена кнопок сообщений, за которыми следует vb.

Код:

Шаг 4. Теперь запустите код, нажав клавишу F5 или кнопку воспроизведения. Вот как будет выглядеть наше окно сообщения.

И снова, если мы нажмем любую из кнопок, это выведет нас из кода.

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

Шаг 1. Напишите подпроцедуру окна сообщения VBA.

Код:

Шаг 2: Используйте функцию MsgBox и выберите сообщение, которое мы обсуждали. А затем vbOKCancel.

Код:

Шаг 3. Запустив этот код, мы получим окно с вопросом «Хотите продолжить?» с опцией OK и ОТМЕНА.

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

Шаг 1. Откройте модуль. В этом объявите переменную как Integer.

Код:

Шаг 2: В определенной переменной мы будем использовать окно сообщения. Как мы видели в других примерах, мы будем использовать сообщение и vbYESNO для кнопок. И чтобы получить вопросительный знак, используйте аналогичный способ использования VB.

Код:

Шаг 3. Чтобы получить другое окно сообщения, используйте цикл If-Else. Напишите условие, мы нажимаем YES, тогда мы получим сообщение «ОК».

Код:

Шаг 4: Или иначе, если мы получим сообщение ЗАКРЫТО.

Код:

Шаг 5. Теперь мы можем скомпилировать код. А затем запустить его. Как мы видим, мы получили окно сообщения, которое мы установили в коде.

Шаг 6: Теперь мы сначала нажмем YES. Мы получим сообщение Хорошо.

И если мы снова запустим код и нажмем НЕТ, мы получим сообщение Close, как показано ниже.

Плюсы VBA MsgBox Да/Нет

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

Что нужно помнить

  • Мы можем вставить несколько кнопок в соответствии с нашими потребностями. Хотя большинство реалистичных окон сообщений имеют 2 или максимум 3 кнопки в окне сообщения.
  • Мы также можем вставить вопросительный знак, предупреждающий знак, восклицательный знак и т. д. в само окно сообщения.
  • В окнах сообщений может быть любое сообщение, но оно должно быть коротким и достаточно точным, чтобы можно было увидеть фактическое сообщение.
  • Сообщения должны быть понятны всем зрителям.
  • После создания кода сохраните файл в формате Excel с поддержкой макросов. Это позволяет нам сохранить код в файле.

Рекомендуемые статьи

Это руководство по VBA Msgbox Yes/No. Здесь мы обсуждаем, как работать с ответом «Да/Нет» в окне сообщений в Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете ознакомиться с другими нашими рекомендуемыми статьями –

Читайте также: