将 VBA InputBox 值(十进制)乘以来自 Json url Web 查询的单元格值(十进制)

Multiply VBA InputBox value (decimal) by cell value (decimal) derived from a Json url Web 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。

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

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

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

声明为 double 而不是 variant

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

找到解决方案:

InputBox 接受小数输入的错误在于 "Thousands Separator" 设置以及您是输入逗号还是指向 InputBox。我将 "Thousands Separator" 设置为使用点 .,因为我正在处理 .csv 文件导出,所以它很有用。两者都可以,但您必须通过以下方式更改 Windows 小数点符号设置:

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

至于乘法部分: 原来InputBoxreturns一个字符串。使用 Val() 将数字字符串转换为数字并且是正确的 VBA 脚本:

Private Sub CommandButton1_Click()
Dim myValue As Variant

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

End Sub