Умножьте значение VBA InputBox (десятичное) на значение ячейки (десятичное), полученное из веб-запроса Json url - PullRequest
0 голосов
/ 20 ноября 2018

(Обновлено). Я новичок в VBA и уже несколько часов пробую разные вещи, но не могу понять, как просто умножить десятичный пользовательский ввод 1,1 на значение ячейки C1 (71388,92). Вот что я попробовал в последний раз:

Private Sub CommandButton1_Click()
Dim myValue As Variant

myValue = InputBox("Prompt", "Title")
Range("C5").Value = myValue * Range("C1")

End Sub

Я получаю ошибку времени выполнения '13' - несоответствие типов, возможно, из-за того, что значение ячейки C1 получено из веб-запроса json. Я пробовал Вариант, Двойной, Одиночный, Длинный и Типы данных Десятичное число, Число и Валюта.

Ссылка для скачивания: https://www.dropbox.com/sh/tg5f2a71k9jy6xq/AACrhI9_6VG8vJkDr0QVCbSUa?dl=0

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

Объявить как двойной вместо варианта

Dim myValue As Double
myValue = InputBox("Prompt", "Title")
Range("C5").Value = myValue * Range("C1")
0 голосов
/ 21 ноября 2018

Найденное решение:

Ошибка при InputBox, принимающем десятичную запись, связана с настройками «Разделителя тысяч» и вводом запятой или точки в InputBox.У меня был установлен «Разделитель тысяч» для использования точки ., потому что я работаю с экспортом в файл .csv, так что это было полезно.Любой из них будет работать, но вы должны изменить настройки десятичного символа Windows, выполнив:

Control Panel > Language > Change date, time, or number formats > Additional Settings > Decimal symbol.

Что касается части умножения: исходный InputBox возвращает строку.Использование Val() преобразует числовую строку в число и является правильным сценарием VBA:

Private Sub CommandButton1_Click()
Dim myValue As Variant

myValue = Val(InputBox("Prompt", "Title"))
Range("C5").Value = myValue * Range("C3")

End Sub
0 голосов
/ 20 ноября 2018

Я думаю, что это ваше решение:

myValue = InputBox("Prompt", "Title")
Range("C5").Select
ActiveCell.FormulaR1C1 = myValue * Range("C1")
...