VBA InputBox值(十进制)乘以从Json URL Web查询派生的单元格值(十进制)

时间:2018-11-19 23:45:18

标签: excel vba excel-vba decimal json-query

(已更新)我是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网络查询派生的。我已经尝试了Variant,Double,Single,Long和数据类型的Decimal,Number和Currency。

下载链接:https://www.dropbox.com/sh/tg5f2a71k9jy6xq/AACrhI9_6VG8vJkDr0QVCbSUa?dl=0

3 个答案:

答案 0 :(得分:0)

我认为这是您的解决方案:

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

答案 1 :(得分:0)

声明为double而不是变体

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

答案 2 :(得分:0)

找到解决方案:

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