какие действия выполняет функция inputbox
Функция InputBox
Отображает приглашение в диалоговом окне, ждет, пока пользователь введет текст или нажмет кнопку, и возвращает строку с содержимым текстового поля.
Синтаксис
InputBox(запрос, [ название ], [ по умолчанию ], [ xpos ], [ ypos ], [ helpfile, контекст ])
В синтаксисе функции InputBox представлены следующие именованные аргументы:
Part | Описание |
---|---|
сообщение | Обязательный аргумент. Строковое выражение, отображающееся в диалоговом окне. Максимальная длина строки аргумента сообщение составляет приблизительно 1024 знака и зависит от их ширины. Если запрос состоит из нескольких строк, можно отделить строки с помощью символа возврата вагона (Chr(13)), символа linefeed (Chr(10)) или комбинации символов возвращаемой строки ((Chr(13) &(Chr(10)) между каждой строкой. |
заголовок | Необязательный аргумент. Строковое выражение, отображаемое в заголовке диалогового окна. Если аргумент заголовок пропущен, в заголовке выводится имя приложения. |
default | Необязательно. Строковое выражение, отображаемое в текстовом поле в качестве ответа по умолчанию, если ввод вообще не будет выполнен. Если пропустить аргумент default, соответствующее текстовое поле отображается пустым. |
xpos | Необязательно. Числовое выражение, задающее в твипах расстояние по горизонтали от левого края диалогового окна до левого края экрана. Если аргумент xpos пропускается, диалоговое окно выравнивается по горизонтальной оси. |
ypos | Необязательно. Числовое выражение, задающее в твипах расстояние по вертикали от верхнего края диалогового окна до верхнего края экрана. Если аргумент ypos пропускается, диалоговое окно позиционируется по вертикальной оси и отстоит от верхнего края окна примерно на треть от высоты экрана. |
файл_справки | Необязательный аргумент. Строковое выражение, определяющее файл, в котором содержится контекстная справка для данного диалогового окна. Если задан аргумент файл_справки, необходимо также указать аргумент контекст. |
контекст | Необязательный аргумент. Числовое выражение, представляющее собой номер контекста, присвоенный автором справки соответствующему разделу. Если задан аргумент контекст, необходимо также указать аргумент файл_справки. |
Примечания
Если одновременно указаны аргументы файл_справки и контекст, пользователь может нажать клавишу F1 (Windows) или HELP (Macintosh) для просмотра раздела справки, соответствующего аргументу контекст. Некоторые ведущие приложения, например Microsoft Excel, автоматически добавляют кнопку Справка в диалоговое окно. Если пользователь выбирает ОК или нажимает ВВОД, функция InputBox возвращает все, что находится в текстовом окне. Если пользователь выбирает Отмена, функция возвращает строку нулевой длины («»).
Текстовое поле принимает только 255 символов. Строка возврата усечена до 254 символов.
В текстовом окне не принимаются разрывы строк, например Shift+Enter. Если пользователь вклеит текст с разрывом строки в текстовом окне, текст усечен на разрыве строки.
Чтобы задать больше чем один первый именованный аргумент, необходимо использовать функцию InputBox в выражении. Чтобы пропустить некоторые из позиционных аргументов, нужно вставить соответствующие запятые.
Пример
В этом примере показывается различные способы использования функции InputBox, чтобы пригласить пользователя ввести значение. Если позиции x и y пропустить, диалоговое окно будет автоматически центрироваться относительно соответствующих осей. Переменная содержит значение, введенного пользователем, если пользователь выбирает MyValue ОК или нажимает клавишу ENTER. Если пользователь выбирает Отмена, возвращается строка нулевой длины.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
InputBox function
Displays a prompt in a dialog box, waits for the user to input text or click a button, and returns a String containing the contents of the text box.
Syntax
InputBox(prompt, [ title ], [ default ], [ xpos ], [ ypos ], [ helpfile, context ])
The InputBox function syntax has these named arguments:
Part | Description |
---|---|
prompt | Required. String expression displayed as the message in the dialog box. The maximum length of prompt is approximately 1024 characters, depending on the width of the characters used. If prompt consists of more than one line, you can separate the lines by using a carriage return character (Chr(13)), a linefeed character (Chr(10)), or carriage return-linefeed character combination ((Chr(13) & (Chr(10)) between each line. |
title | Optional. String expression displayed in the title bar of the dialog box. If you omit title, the application name is placed in the title bar. |
default | Optional. String expression displayed in the text box as the default response if no other input is provided. If you omit default, the text box is displayed empty. |
xpos | Optional. Numeric expression that specifies, in twips, the horizontal distance of the left edge of the dialog box from the left edge of the screen. If xpos is omitted, the dialog box is horizontally centered. |
ypos | Optional. Numeric expression that specifies, in twips, the vertical distance of the upper edge of the dialog box from the top of the screen. If ypos is omitted, the dialog box is vertically positioned approximately one-third of the way down the screen. |
helpfile | Optional. String expression that identifies the Help file to use to provide context-sensitive Help for the dialog box. If helpfile is provided, context must also be provided. |
context | Optional. Numeric expression that is the Help context number assigned to the appropriate Help topic by the Help author. If context is provided, helpfile must also be provided. |
Remarks
When both helpfile and context are provided, the user can press F1 (Windows) or HELP (Macintosh) to view the Help topic corresponding to the context. Some host applications, for example, Microsoft Excel, also automatically add a Help button to the dialog box. If the user chooses OK or presses ENTER, the InputBox function returns whatever is in the text box. If the user chooses Cancel, the function returns a zero-length string («»).
The text box accepts only 255 characters. The return string is truncated to 254 characters.
The text box does not accept line breaks, such as Shift+Enter. If the user pastes text with a line break in the text box, the text is truncated at the line break.
To specify more than the first named argument, you must use InputBox in an expression. To omit some positional arguments, you must include the corresponding comma delimiter.
Example
This example shows various ways to use the InputBox function to prompt the user to enter a value. If the x and y positions are omitted, the dialog box is automatically centered for the respective axes. The variable MyValue contains the value entered by the user if the user chooses OK or presses the ENTER key. If the user chooses Cancel, a zero-length string is returned.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Построение диалогов
Содержание
Диалоги
Диалоги являются абсолютно необходимым средством для повышения управляемости и гибкости макропрограмм.
Они представлены двумя командами: MsgBox (диалог с кнопками) и InputBox (для ввода значений).
Для начинающих программистов этого вполне достаточно.
Синтаксис команд:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Можно заметить, что отдельные элементы весьма схожи и повторяются:
prompt — единственный обязательный элемент (он задает текст сообщения, выводимого внутри окна диалога);
title — заголовок окна, обобщающий вопрос диалога;
helpfile. — ваша подсказка, обсуждение (и создание) которой выходит за рамки изучаемого материала.
InputBox
Диалог предназначен для ввода единичного символьного (строкового) значения. Как видно из основного синтаксиса:
InputBox(prompt[, title] [, default] [, xpos] [, ypos]),
обязательным является только поясняющий текст (prompt).
Появляется возможность указать значение по умолчанию (default), пренебрегать которым не стоит. Ведь во многих случаях оно может быть предсказано и пользователю не придется заниматься утомительным вводом.
Также можно указать в твипсах (1/20 часть пикселя, а не пункта, как принято в полиграфии) координаты окна (xpos, ypos). Если соответствующие координаты опущены, то диалог центрируется относительно горизонтали и опускается примерно на треть экрана по вертикали.
Использовать команду следует в виде функции, так как введенное значение обязано быть присвоено переменной.
Результат будет выглядеть так:
Если внимательно посмотреть на текст программы, то закономерным будет вопрос: переменной x (числового типа Single) будет передаваться строковое значение, что является ошибочным?
Однако в VBA это будет обработано правильно, если пользователь введет любое число: преобразование пройдет само собой. Если же он введет буквы или нажмёт кнопку отмены (Cancel), то переменной будет присваиваться строковое значение, что породит ошибку:
Избежать подобной ситуации можно двумя способами, предоставляющими различные возможности.
При нажатии на кнопку Cancel будет возвращена пустая строка («»), преобразуемая в 0.
Если такой ввод допустим в принципе, то нет возможности прекратить выполнение программы без дополнительного запроса пользователю.
InputBox в Excel VBA
К сожалению, объектная модель Word и Excel не совпадают, в связи с чем приходится говорить, что в Excel можно воспользоваться ещё одним способом:
MsgBox
Вспомним синтаксис команды:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
Атрибут buttons представляет собой сумму трех (реже — более) целых чисел, означающих: набор кнопок, картинку, кнопку по умолчанию. Последняя довольно важна, так как многие пользователи невнимательно относятся к надписям в диалоге, и гораздо разумнее активизировать для него ту кнопку, нажатие на которую требуется чаще. Вместо чисел можно использовать системные переменные памяти. Подробная информация приведена в таблице.
Переменная Word | Значение | Описание |
vbOKOnly | 0 | Вывести только кнопку OK |
vbOKCancel | 1 | Вывести кнопки OK и Cancel |
vbAbortRetryIgnore | 2 | Вывести кнопки Abort, Retry и Ignore |
vbYesNoCancel | 3 | Вывести кнопки Yes, No и Cancel |
vbYesNo | 4 | Вывести кнопки Yes и No |
vbRetryCancel | 5 | Вывести кнопки Retry и Cancel |
vbCritical | 16 | Вывести картинку Critical Message |
vbQuestion | 32 | Вывести картинку Warning Query |
vbExclamation | 48 | Вывести картинку Warning Message |
vbInformation | 64 | Вывести картинку Information Message |
vbDefaultButton1 | 0 | По умолчанию активна 1‑я кнопка |
vbDefaultButton2 | 256 | По умолчанию активна 2‑я кнопка |
vbDefaultButton3 | 512 | По умолчанию активна 3‑я кнопка |
vbDefaultButton4 | 768 | По умолчанию активна 4‑я кнопка |
vbApplicationModal | 0 | Диалог модален для Word: для продолжения работы в приложении и самого макроса нужно нажать на одну из кнопок |
vbSystemModal | 4096 | Диалог модален для Windows: все приложения прекращают работу до тех пор, пока пользователь не нажмет на одну из кнопок |
vbMsgBoxHelpButton | 16384 | Добавляет в диалог кнопку Help (Справка) |
VbMsgBoxSetForeground | 65536 | Переводит окно диалога на передний план (практическое применение неизвестно) |
vbMsgBoxRight | 524288 | Надписи выравниваются вправо |
vbMsgBoxRtlReading | 1048576 | Для языков, читаемых справа налево |
Как видно, если не задавать для кнопок ничего, то получится диалог с кнопкой ОК и без пиктограммы. Кстати, он является одним из наиболее часто используемых вариантов для вывода информации о результатах работы программы как в процессе её отладки, так и при обычном режиме работы.
Пример: MsgBox «Значение х достигло » & x
Диалог будет выглядеть так:
Следует отметить, что кнопка ОК обладает интересным свойством: её можно нажать как мышкой, так и клавишами Enter, Space и Esc.
Так как можно вывести диалог с большим разнообразием кнопок, требуется помочь программе разобраться, какая из них была нажата. В этом случае команда запускается в виде функции, возвращающей значение (целое число) переменной в памяти. Далее можно проанализировать его и принять решение о дальнейших действиях
Ниже приведен список значений, возвращаемых функцией MsgBox() в зависимости от нажатой в диалоге кнопки.
Значение | Константа Word | Надпись на кнопке |
1 | vbOK | OK |
2 | vbCancel | Cancel |
3 | vbAbort | Abort |
4 | vbRetry | Retry |
5 | vbIgnore | Ignore |
6 | vbYes | Yes |
7 | vbNo | No |
Диалог будет выглядеть так:
Можно сказать, что в нем допущена интерфейсная ошибка, так как нажатие клавиши Esc не позволит закрыть диалог. Для комфортности лучше использовать одновременно кнопки Yes, No и Cancel. Для доработки понадобится только заменить в тексте программы 4 на 3: ведь нажатие на Cancel обработается также, как и No (выход из программы).
Обратите внимание! Вместо 4+48, можно было бы записать сразу результат сложения (52). Программа выполнилась бы чуточку быстрее, но редактирование человеком стало бы сложнее. Также можно заменить эту форму сложением программных констант: vbYesNo+vbExclamation, что легче понять при чтении.
Идеальным(?) решением было бы добавление кнопки Cancel, как показано ниже.
Функция InputBox
Функция InputBox применяется для ввода чисел или текста. Эта функция отображает диалоговое окно ввода, содержащее поле ввода и поясняющий текст. Синтаксис функции Окна ввода (InputBox)следующий:
InputBox(Приглашение[, Заголовок ] [, НачЗначение]),
Эта функция требует обязательного задания только аргумента Приглашение.
Заголовок— это надпись в строке заголовка Окна ввода.
НачЗначение— это значение, которое будет отображаться (по умолчанию) в поле ввода, пока пользователь не введет свое значение. Если этот аргумент опустить, то поле ввода отображается пустым.
Возвращаемым значением данной функции является информация, вводимая пользователем. Возвращаемое значение можно использовать в окнах сообщений, поместить в ячейку рабочего листа, применить в вычислениях и т.д.
VBA автоматически приписывает этой информации тип Variant.
Пример диалогового окна ввода показан на рисунке
Текст: InputBox «Введите число», «Какое число задумано?»
Использование объединенных текстовых строк
Если надо объединить несколько текстовых строк в одну, используется символ конкатенации & (амперсенд). С помощью амперсенда можно объединять и числовые значения. При этом числа будут сначала преобразованы в строки. Результат тоже будет строкой.
II. Выполните задание, следуя указаниям
Рассчитайте площадь прямоугольника используя объединение строк. Стороны прямоугольника вводятся через окна ввода. Результат выполнения программы выводится через окно сообщений.
Public Sub Объединение()
Dim Storona1 As Single, Storona2 As Single, Rezultat As Single
Storonal = InputBox(«Введите первую сторону прямоугольника», «Площадь прямоугольника»)
Storona2 = InputBox(«Введите вторую сторону прямоугольника», «Площадь прямоугольника»)
Rezultat = Storonal * Storona2
MsgBox «Площадь прямоугольника =» & Rezultat & «квадратных сантиметров»
III. Выполните самостоятельно задания.
1. Экранная форма приложения содержит три текстовых поля и командную кнопку «ПУСК». После нажатия на эту кнопку последовательно появляются Окна для ввода вашей фамилии, имени и отчества. После ввода данных все три текстовых поля пользовательской формы должны быть заполнены.
2. Дополните предыдущую программу таким образом, чтобы введенная информация отображалась как в экранной форме, так и в окне вывода.
IV. Ответьте на вопросы.
Контрольные вопросы
1. Использование функции MsgBox.
2. Использование функции InputBox.
3. Использование объединенных текстовых строк.
Форма отчета:Файл с выполненным заданием. Ответы на контрольные вопросы.
ПРАКТИЧЕСКАЯ РАБОТА №9
Тема: Операции и функции VBA
Какие действия выполняет функция inputbox
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа String, содержащее текст, введенный в поле.
Обязательный. Строковое выражение, отображаемое как сообщение в диалоговом окне. Максимальная длина строки prompt составляет приблизительно 1024 символов и зависит от ширины используемых символов. Строковое значение prompt может содержать нескольких физических строк. Для разделения строк допускается использование символа возврата каретки (Chr(13)), символа перевода строки (Chr(10)) или комбинацию этих символов (Chr(13) & Chr(10)).
Необязательный. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения.
Необязательный. Строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым.
Необязательный. Числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана (в твипах). Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали.
Необязательный. Числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана (в твипах). Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана.
Необязательный. Строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо указать также аргумент context.
Необязательный. Числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо указать также аргумент helpfile.
Если указаны оба аргумента, helpfile и context, пользователь имеет возможность нажатием клавиши F1 вызвать контекстную справку. Некоторые главные приложения, например, Microsoft Excel, также автоматически добавляют в диалоговое окно кнопку «Справка». Если пользователь нажимает кнопку «OK» или клавишу ENTER, функция InputBox возвращает содержимое поля ввода. Если пользователь нажимает кнопку «Отмена», функция возвратит пустую строку («»).
Функцию InputBox с двумя или большим числом аргументов можно использовать только в выражении. Наличие запятых, соответствующих отсутствующим аргументам, является обязательным.
‘в данном примере приведены различные способы получения сведений
‘от пользователя с помощью функции InputBox. Если аргументы x и y
‘опущены, окно диалога автоматически выравнивается по центру по
‘соответствующим осям. Переменная MyValue содержит значение, введенное
‘пользователем, если была нажата кнопка OK или клавиша ENTER. Если
‘пользователь нажмет кнопку Отмена, функция возвратит пустую строку