2015-10-19 3 views
3

Я пытаюсь создать поле ввода, которое имеет число с десятичными знаками в качестве значения по умолчанию. Я устанавливаю Inputbox в тип формулы, потому что пользователь может ввести формулу или ссылку на ячейку.VBA Inputbox разделяет десятичную запятую, преобразует double в строку

Проблема заключается в том, что поле ввода, похоже, разделяет запятую и сглаживает число до строки. Я мог бы исправить это значение числа как строку с Format, а затем вернуться к следующему номеру, но потерять точность. И я хотел бы понять, что происходит.

Код:

Sub test() 
    Dim Defolt As Double 
    Defolt = 1.1866701960364 
    Dim InputValue 
    InputValue = Application.InputBox("Value?", , Defolt, , , , , 0) 
    'for this example, the user just clicks OK to the default value 
    Debug.Print InputValue 
End Sub 

Результаты таковы: VBA inputbox coerses double to string without decimal marker

Спасибо!

ps: местность является испанской. Версия Excel - Excel 2010 32 бит.

ответ

2

Посмотрите here. Важная часть находится прямо под столом:

Вы можете использовать сумму допустимых значений для Тип. Например, для ввода, который может принимать как текст, так и числа, установленного типа 1 + 2.

и немного дальше вниз в слове:

Если тип равен 0, InputBox возвращает формулу в виде текста - например, «= 2 * PI()/360». Если в формуле есть какие-либо ссылки, они возвращаются как ссылки в стиле A1. (Используйте ConvertFormula для преобразования между стилями ссылок.)

Попробуйте установить тип как 1 и посмотреть, можете ли вы по-прежнему использовать формулу и номер. Документация заставляет меня думать, что вы можете (в основном вы получаете формулу бесплатно). Поскольку вы устанавливаете тип в 0, вы возвращаете тип текста по умолчанию.

Смежные вопросы