Как вывести диалоговое окно для ввода числа?

Как вывести диалоговое окно для ввода числа?
  1. Вариант. Для того, чтобы отобразить диалоговое окно, позволяющее ввести необходимое число, можно воспользоваться вышеупомянутой функцией InputBox и функцией Val
    code: #vba
    iData = Val(InputBox(Prompt:="Введите число", Title:=""))

    Используя подобную конструкцию имейте ввиду, что после отказа от ввода, т.е. нажатии кнопки Отмена или Закрыть [X], Вы получите 0, кроме того, в качестве разделителя целой и дробной части числа, необходимо использовать только точку .

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

    code: #vba
    iData = InputBox("Введите число", "")
     
    If iData <> "" Then
       iData = Val(Application.Substitute(iData, ",", "."))
       'iData = Val(Replace(iData, ",", ".")) 'XL2000
       MsgBox "Вы ввели число : " & iData, , ""
    Else
       MsgBox "Вы отказались от ввода [не]нужного числа", , ""
    End If
  2. Вариант. Можно также использовать метод InputBox объекта Application
    code: #vba
    Dim iResult As Double
    iResult = Application.InputBox(Prompt:="Введите число", Title:="", Type:=1)
    • Используя этот метод Вы сможете не только ввести необходимое число, но и указать (т.е. ввести вручную или выбрать с помощью мышки) в качестве источника данных ячейку или диапазон ячеек (правда в этом случае в вычислении будут участвовать данные только первой ячейки). Кроме того, Вы можете вводить и более сложные формулы (возвращающие число или текст, который может быть преобразован), к примеру, =12 ="12" =5+7 =A1*1,25 =ПИ() =СУММ(A:A) =ЕСЛИ(МЕСЯЦ(СЕГОДНЯ())=5;A1;B1) =Имя_Ячейки =Имя_Формулы и т.п.
    • К сожалению, разработчики разрешили и ввод даты, поэтому, после ввода, например, 1.1.1900 или 1/1/1900 Вы получите 1, а после ввода 1.1.2009 или 1/1/2009 Вы получите, соответственно, 39814 (подробнее о датах в Excel)
    • После нажатии кнопки Отмена или Закрыть [X], Вы получите 0, но этого можно избежать, если заменить Double на Variant, и просто проверить не возвращает ли функция False
    code: #vba
    Dim iResult 'As Variant
    
    iResult = Application.InputBox(Type:=1, Title:="", _
    Prompt:="Введите число или формулу", Default:="=(2+2)*2")
     
    If Not iResult Then
       MsgBox "Вы получили : " & iResult, , ""
    Else
       MsgBox "Вы отказались от ввода", , ""
    End If
Поделиться:

Похожие статьи: