InputBox путает десятичные записи со строками - PullRequest
2 голосов
/ 06 марта 2019

Я пытаюсь использовать функцию InputBox, чтобы иметь возможность ввода данных пользователем. Однако данные в основном состоят из десятичных значений. Когда я тестирую свою программу и собираюсь вычесть два значения, оба введенные из InputBox, она не выполняет математическую операцию.

thckmax = InputBox("What is the maximum nominal thickness?", "Enter Max Nominal Thickness Measurement")
thckmin = InputBox("What is the minimum nominal thickness?", "Enter Min Nominal Thickness Measurement")
thcknom = (thckmax + thckmin)

Если я должен был ввести .05 и .04 соответственно, то предыдущий код отображается как:

thcknom is .05.04

Я пытаюсь выполнить математическую операцию, вдобавок к двум переменным; однако, это просто «добавление» двух строк рядом друг с другом. Как мне исправить эту проблему?

Ответы [ 2 ]

2 голосов
/ 06 марта 2019

Вам необходимо объявить переменные как Double или Single, в зависимости от ожидаемого ввода:

Sub t()
Dim thckmax As Double, thckmin As Double, thcknom As Double
thckmax = InputBox("What is the maximum nominal thickness?", "Enter Max Nominal Thickness Measurement")
thckmin = InputBox("What is the minimum nominal thickness?", "Enter Min Nominal Thickness Measurement")
thcknom = (thckmax + thckmin)
Debug.Print thcknom
End Sub

См. типы данных VBA для получения дополнительной информации.

Также я предлагаю добавить Option Explicit в самый верх ваших модулей, что заставляет вас объявлять все переменные.

1 голос
/ 06 марта 2019

InputBox позволяет определить тип ввода .Поскольку вы не указали его, используется значение по умолчанию, а именно TEXT.
Что-то вроде

thckmax = Application.InputBox(Prompt:="What is the maximum nominal thickness?", Type:=1)

гарантирует, что вы получите число, что в конечном итоге предотвратит путаницу десятичных символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...