Мастерство макросов Excel

VBA Application.InputBox предоставляет диалоговое окно для получения ответа от пользователя.

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

Если вы хотите получить от пользователя один фрагмент текста или значения, вы можете использовать InputBox. Следующий код запрашивает у пользователя имя и записывает ответ пользователя в окно Immediate Window (Ctrl + G для просмотра)

 'https://excelmacromastery.com/Sub GetValue () Dim name As  String name = Application.InputBox ("Пожалуйста, введите свое имя") Debug.Print nameEnd Sub 

Contents

  • 1 Важно
  • 2 InputBox Синтаксис
  • 3 параметра InputBox
  • 4 дополнительных параметра VBA
  • 5 Параметр заголовка InputBox
  • 6 InputBox Параметр по умолчанию
  • 7 Параметры параметра типа InputBox
    • 7.1 Получение диапазона
    • 7.2 Отмена диапазона
  • 8 Материалы по теме
  • 9 Что дальше?
  • 10 Получите бесплатную электронную книгу

Важно

Как ни странно, в Excel VBA есть два InputBox.

  1. Application.InputBox
  2. InputBox (также называется VBA.InputBox )

Они почти e то же самое, за исключением того, что:

  1. Application.InputBox позволяет вам указать тип переменной результата, например Строка, целое число, дата, диапазон.
  2. Параметры Application.InputBox Left и Top не используются VBA.

В приведенном ниже примере Application.InputBox позволяет вам указать тип, но VBA.InputBox не поддерживает:

 number = VBA.InputBox ("Enter Number") number = Application.InputBox ("Enter number", Type: = 1)  'Тип - число 

В этой статье мы будем иметь дело в основном с Application.InputBox.

Синтаксис InputBox

Приглашение InputBox, заголовок [необязательно], по умолчанию [необязательно], слева [необязательно], вверху [необязательно], файл справки [необязательно], Левый [необязательно]

Параметры InputBox

приглашение — это текст, отображаемый InputBox, например «Введите число от одного до десяти», «Выберите диапазон».

title [optional] — это текст, который отображается в строка заголовка InputBox.

по умолчанию [необязательно] — это будет ответ, если пользователь не ввел ответ.

left [необязательно] — не используется. Если вам нужно разместить InputBox, вам нужно использовать VBA.InputBox.

top [optional] — не используется. Если вам нужно разместить InputBox, вам необходимо использовать VBA.InputBox.

helpfile [optional] — указывает связанный файл справки, если ваш у приложения есть один (подсказка: вероятно, нет, если это не устаревшее приложение. )

helpfilecontextidl [необязательно] — указывает позицию в файле справки.

type [optional] — указывает тип значения, которое будет возвращено. Если этот параметр не используется, возвращаемый тип — текст. См. Ниже список опций для этого параметра.

Использование InputBox упрощается тем, что вам действительно нужно использовать только 4 из этих параметров, а именно приглашение , title , по умолчанию и type .

Дополнительные параметры VBA

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

  1. Оставьте остальные необязательные параметры пустыми.
  2. Используйте имя параметра.

Вот примеры каждого метода:

 'Метод 1: Использование пустых параметровNumber = Application.InputBox ("Введите число"  ,, 99) Number = Application.InputBox ("Введите число",, 99,,,,, 1) 'Метод 2: присвоение имени параметрам Number = Application.InputBox ("Введите число", по умолчанию: = 99) Number = Application.  InputBox ("Введите число", по умолчанию: = 99, Тип: = Число) 

Вы можете видеть, что наименование параметров — лучшая идея, так как это делает код становится более читаемым и понятным.

Параметр заголовка InputBox

Параметр Title просто позволяет вам видеть заголовок InputBox диалог. Следующие примеры демонстрируют это:

 Тусклый год As Longyear = Application.InputBox («Введите год», Title: = «Отчет клиента») 

Параметр InputBox по умолчанию

Значение по умолчанию — это просто значение, которое будет возвращено, если пользователь не введет значение. Это значение отображается в поле ввода, когда оно появляется.

При запуске следующего кода значение Apple отображается в поле ввода, когда оно появляется:

 Тусклые фрукты As Longfruit = Application.InputBox ("Пожалуйста, введите фрукты", по умолчанию: = "Apple") 

Параметры параметра типа InputBox

Значение Тип
0 Формула
1 Number
2 String
4 Boolean — True или False
8 Range
16 Значение ошибки, например # Н/Д
64 Массив значений

Вы можете создать свои собственные константы для параметра Type, если хотите, чтобы ваш код был более читабельным:

 Public Enum appInputBox IBFormula = 0 IBNumber = 1 IBString = 2 IBBoolean = 4  IBRange = 8 IBError = 16 IBArray = 64End Enum 

Затем вы можете использовать их следующим образом:

 year = Application.InputBox  («Введите год», тип: = IBNumber) year = Application.InputBox («Введите свое имя», тип: = IBString) 

Получение диапазона

Чтобы получить диапазон от пользователя, мы устанавливаем Ty pe равным 8.

Если мы устанавливаем возвращаемую переменную как диапазон, мы должны использовать ключевое слово Set , как в этом примере:

 Dim rg As RangeSet rg = Application.InputBox ("Enter the Year", Type: = 8) 

Если вы не укажете ключевое слово Set, вы получите ошибку времени выполнения 91: «объектная переменная или с не установленным блоком ».

В VBA мы можем объявить переменную как вариант в VBA. Это означает, что VBA установит тип во время выполнения:

 'В обоих случаях переменная будет a variantDim rg1 As VariantDim rg2 

Если мы заменим ключевое слово Set вариантом, тогда InputBox вернет массив значений вместо объекта диапазона:

 Dim rg As Variant 'Возвращает массив значений rg = Application.InputBox (  "Enter the Year", Type: = 8) 'Возвращает диапазон objectSet rg = Application.InputBox ("Enter the Year", Type: = 8) 

Отмена диапазона

Одна из проблем при выборе диапазона заключается в том, что если пользователь нажимает кнопку «Отмена», VBA выдает ошибку.

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

 'https://excelmacromastery.com/Sub UseInputBox () Dim rg As Range' Отключить ошибки При ошибке Возобновить Далее Установить rg = Application.InputBox ("Пожалуйста  enter Range ", Тип: = 8) 'Включить ошибки при ошибке Goto 0' Показать результат Если rg Is Nothing Then MsgBox" Диапазон был отменен "Else MsgBox" Выбранный диапазон: "& rg.Address End IfEnd Sub 

Дополнительная литература

Окно сообщения VBA

Пользовательская форма VBA — руководство для всех

Элементы управления пользовательской формы VBA — руководство для всех

Что дальше?

Бесплатное руководство по VBA Если вы новичок на VBA или вы хотите отточить свои существующие навыки VBA, тогда почему бы не попробовать The Ultimate VBA Tutorial.

Сопутствующее обучение: Получите полный доступ к обучающим вебинарам Excel VBA.

( ПРИМЕЧАНИЕ: Планируете создать приложение VBA или управлять им? Узнайте, как создать 10 приложений Excel VBA с нуля.)

Получите бесплатную электронную книгу

Пожалуйста, подпишитесь на мои информационный бюллетень и получите эксклюзивный контент VBA, который вы не можете найти здесь, в блоге, а также бесплатный доступ к моей электронной книге How to Ace the 21 Most Common Question in VBA , которая полна примеров, которые вы можете используйте в своем собственном коде.



Поле ввода в VBA

Поле ввода в VBA не имеет метода, который разрешает доступ к всплывающему окну. el que introducir cierta información.

Como ya vimos en el caso del Msgbox (ver más), es muy frecuente en Excel, usar pop-ups for interactuar con el usuario. En el caso del msgbox lo que consguiremos será enviar al usuario un simple aviso o mensaje sencillo. Con el inputbox podremos pedirle informacion.

Contenido

  • 1 Qué es un Inputbox en VBA?
  • 2 Sintaxis
  • 3 Ejemplos
  • 4 Descargable con ejemplos

Qué es un Inputbox en VBA?

Un Inputbox en VBA es un pop-up como el de la siguiente image en la que le pedimos cierta información al usuario para que la Introduction

En este caso hemos usado un código muy sencillo que es el siguiente:

 Sub Input_Box () mi_variable  = Application.InputBox ("Introduzca su nombre", "Nombre") End Sub 

Como vemos en el pedacito de código anterior, el resultado de la pregunta lo almacenaremos en una variable y esto será required.

Синтаксис

Синтаксис поля ввода в VBA не усложняет выполнение задач, связанных с простотой описания:

Applicaiton. # strong> InputBox (запрос, заголовок, по умолчанию, слева, вверху, файл справки, HelpContextID, тип )

Donde las más comunes y útiles son las siguientes:

  • Подсказка: el texto que se mostrará en el pop-up. Es el único valor Obligatorio
  • Название: el título del pop-up que aparecerá en la parte superior.
  • По умолчанию: el valor que mostrará por defecto el inputbox.
  • Тип: el tipo de valor que podemos usar que puede ser de tipo numérico (1), texto (2), verdadero/falso (4), referencia a una celda (8), una matriz ( 64)…

En el caso de que el valor se deje vacío o no sea del tipo que hemos especificado VBA nos mandará un error automáticamente, así que no hará falta comprobar el tipo de dato que nos devuelve el inputbox en nuestro código VBA.

Ejemplos

Пример 1: Inputbox que pide la edad de la persona

 Sub Input_Box_ejemplo1 () mi_edad = Приложение. InputBox (prompt: = "Indique su edad:", Type: = 2) End Sub 

Ejemplo 2 : поле ввода, которое предваряет правильный алгоритм

 Sub Input_Box_ejemplo2 () Correcto = Application.InputBox (prompt: = "¿Eres mayor de edad?", Тип: = 4) End Sub 

En este caso, si damos ОК, если вы хотите исправить ошибку VERDADERO или FALSO. En caso de no ser así nos devolverá un valor.

Ejemplo 3 : поле ввода, которое будет означать, что кто-то другой, и вы не знаете, что такое puesto por defecto.

 Sub Input_Box_ejemplo3 () n_amigo = Application.InputBox (prompt: = "Indica el nombre de un amigo", _ По умолчанию: = "Quique", Тип: = 2) End Sub 

En la siguiente image vemos el resultado de este inputbox

El nombre que habíamos puesto en Nuestro código aparece en el inputbox y seleccionado.

Ejemplo 4 : Inputbox for seleccionar el valor de una celda

 Sub Input_Box_ejemplo4 (  ) celda_selec = Application.InputBox (prompt: = "Seleccione una celda", Type: = 8) End Sub 

Tal y como lo hemos escrito, el valor de la celda se guardará en la variable celda_selec pero no el rango celda (как объект VBA). Para hacer (por ejemplo si queremos saber la fila y la columna de la celda que se ha seleccionado) añadiremos un set antes de la línea de código para crear el objeto rango.

 Sub Input_Box_ejemplo4_b () Set celda_selec = Application.InputBox (prompt: = "Seleccione una celda", Type: = 8) End Sub 

Descargable con ejemplos

En el siguiente enlace podréis descargar un libro de Excel con los ejemplos que hemos estado comentado.

Ejemplos de Inputbox en VBA

(Посещено 102,878 раз, 1 посещение сегодня)
Оцените статью
logicle.ru
Добавить комментарий