Как в эксель сделать диалоговое окно

Добавил пользователь Alex
Обновлено: 17.09.2024

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

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

Некоторые диалоговые окна состоят из нескольких вкладок. Вкладка - это элемент диалогового окна, который содержит параметры, объединенные по определенному признаку. Названия вкладок представлены в виде ярлыков. В диалоговом окне может быть активной только одна вкладка. Для активизации вкладки нужно щелкнуть мышью на ее ярлыке, а для перехода на другую вкладку - воспользоваться комбинацией клавиш [Ctrl+Tab] или [Ctrl+Shift+Tab]

Каждое диалоговое окно содержит кнопки ОК и Отмена (возможны дополнительные кнопки). Установки в диалоговых окнах объединены по определенным критериям в области, каждая из которых имеет свое название. Установки можно произвести, используя переключатели, опции, поля списка, поля ввода.

Рассмотрим подробнее, что представляют собой эти элементы:
- Переключатель - это элемент диалогового окна, имеющий вид кружка. Он служит для выбора одного из нескольких взаимоисключающих вариантов. Если внутри кружка отображается точка, то переключатель считается включенным. В одной области могут находиться два и более переключателей.
- Опция - это элемент диалогового окна, имеющий вид маленького квадратика. При выборе опции в таком квадратике появляются галочка или крестик, говорящие об активизации данной опции. В одной области, в отличие от переключателей, возможна одновременная активизация всех опций.
- Поле списка - это поле, где можно выбрать одно значение из двух или нескольких предлагаемых. Оно может иметь несколько разновидностей. Это может быть, например, поле с раскрывающимся списком (характеризуется наличием кнопки со стрелкой, расположенной рядом со списком).
- Поле ввода - это поле, предназначенное для ввода с клавиатуры числовых или текстовых значений.

При работе с диалоговым окном для выполнения различных установок проще всего использовать мышь.

Для перехода к следующему элементу диалогового окна можно воспользоваться клавишей [Tab], а для возврата к предыдущему элементу - комбинацией клавиш [Shift+Tab]. Чтобы активизировать какую-либо опцию, нужно перейти к ней и нажать клавишу [Пробел]. Активизировать опцию или переключатель можно также нажатием клавиши [Alt] в комбинации с клавишей буквы, подчеркнутой в названии элемента.

Метод Application.InputBox предназначен в VBA Excel для вывода диалогового окна с более расширенными возможностями, чем диалоговое окно, отображаемое функцией InputBox. Главным преимуществом метода Application.InputBox является возможность автоматической записи в поле ввода диапазона ячеек (в том числе одной ячейки ) путем его выделения на рабочем листе книги Excel и возвращения различных данных, связанных с ним, а также проверка соответствия возвращаемого значения заданному типу данных.

Синтаксис метода

Application.InputBox ( Prompt , Title , Default , Left , Top , HelpFile , HelpContextID , Type )

Обязательным параметром метода Application.InputBox является Prompt, если значения остальных параметров явно не указаны, используются их значения по умолчанию.

Обратите внимание на то, что

  • оператор InputBox вызывает функцию InputBox, а
  • оператор Application.InputBox вызывает метод InputBox.

Чтобы не было путаницы, метод InputBox пишут как метод Application.InputBox, в том числе и в справке разработчика.

Параметры метода

* Параметры Left и Top учитываются при отображении диалогового окна методом Application.InputBox в Excel 2003, а в последующих версиях Excel 2007-2016 уже не работают.
**При первом запуске горизонтальное выравнивание устанавливается по центру, при последующих — форма отобразиться в том месте, где ее последний раз закрыли.
***При первом запуске вертикальное расположение приблизительно равно 1/3 высоты экрана, при последующих — форма отобразиться в том месте, где ее последний раз закрыли.
**** Если будут указаны параметры HelpFile и HelpContextID, в диалоговом окне появится кнопка справки.

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

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

Аргументы параметра Type и соответствующие им типы возвращаемых значений:

Я создал генератор отчетов по базе данных в Excel. Я пытаюсь создать диалоговое окно, в котором отображается информация о состоянии во время работы программы.

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

Приведенный ниже код хорошо работает при выполнении действий в Excel (XP или более поздней версии).

Создайте форму под названием "frmStatus" , поставьте метку на форму под названием "Label1" .

Установите свойство формы 'ShowModal' = false , это позволяет коду запускаться во время отображения формы.

Попробуйте добавить в цикл вызов DoEvents . Это должно позволить форме перерисовываться и принимать другие запросы.

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

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

Хорошо @JonnyGold, вот пример того, что я использовал .

Надеюсь это поможет!

Вставьте чистый лист в книгу. Переименуйте лист, например. "Информация"

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

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

К настоящему моменту мы использовали окно MsgBox, чтобы выводить информацию на экран.

В этом случае MsgBox вызывается только с одним аргументом. См. код ниже:

Сейчас мы создадим диалоговое окно, которое будет просить подтверждение для удаления, прежде чем две инструкции будут выполнены. Далее есть три аргумента, которые мы будем использовать: Text: текст диалогового окна Buttons: выбор кнопок (yes, no, cancel и т.п.) + другие опции Title: заголовок диалогового окна

vbYesNo отмечает, что кнопками диалогового окна являются "Yes" и "No", а vbYes представляет кнопку "Yes":

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

ConstantNumerical ValueDescription
vbOKOnly0ok - dialog boxes
vbOKCancel1ok - dialog boxes
cancel - dialog boxes
vbAbortRetryIgnore2abort - dialog boxes
retry - dialog boxes
ignore - dialog boxes
vbYesNoCancel3yes - dialog boxes
no - dialog boxes
cancel - dialog boxes
vbYesNo4yes - dialog boxes
no - dialog boxes
vbRetryCancel5retry - dialog boxes
cancel - dialog boxes
vbCritical16critical - dialog boxes
vbQuestion32question - dialog boxes
vbExclamation48exclamation - dialog boxes
vbInformation64information - dialog boxes

Здесь пример MsgBox, который будет продолжать отображаться каждый раз при цикле, пока пользователь будет жать Yes:

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

Для отображения новой ленты вы можете использовать функцию Chr с аргументом 10, которая отвечает за перенос строки, например:

получим следующий результат:

InputBox

InputBox запрашивает пользователя ввести значение в диалоговое окно, например:

Получим следующий результат:

Третий аргумент может быть использован для установки значения по умолчанию:

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