Как вывести диалоговое окно для ввода числа?
Вариант. Для того, чтобы отобразить диалоговое окно, позволяющее ввести необходимое число, можно воспользоваться вышеупомянутой функцией InputBox и функцией
Val
iData =
Val
(InputBox(Prompt:="Введите число", Title:=""))
Используя подобную конструкцию имейте ввиду, что после отказа от ввода, т.е. нажатии кнопки Отмена или Закрыть [X], Вы получите
0
, кроме того, в качестве разделителя целой и дробной части числа, необходимо использовать только точку .
Если же возникнет необходимость в отказе от ввода, или при ввода числа необходимо будет использовать более привычный разделитель, а именно запятую , то в таком случае :
iData = InputBox("Введите число", "")
If
iData <> ""
Then
iData =
Val
(Application
.
Substitute(iData, ",", "."))
'iData = Val(Replace(iData, ",", ".")) '
XL2000
MsgBox "Вы ввели число : " & iData, , ""
Else
MsgBox "Вы отказались от ввода [не]нужного числа", , ""
End
If
Вариант. Можно также использовать метод 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
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