0

(更新)我是 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”- 类型不匹配,可能是因为 cellC1的值来自 json Web 查询。我试过 Variant、Double、Single、Long 和数据类型 Decimal、Number 和 Currency。

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

4

3 回答 3

0

找到解决方案:

接受小数输入的错误InputBox在于“千位分隔符”设置以及您输入逗号还是指向InputBox. 我将“千位分隔符”设置为使用一个点.,因为我正在使用 .csv 文件导出,所以它很有用。两者都可以,但您必须通过以下方式更改 Windows 十进制符号设置:

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

至于乘法部分:原始InputBox返回一个字符串。UsingVal()将数字字符串转换为数字,并且是正确的 VBA 脚本:

Private Sub CommandButton1_Click()
Dim myValue As Variant

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

End Sub
于 2018-11-21T00:00:11.920 回答
0

声明为双而不是变体

Dim myValue As Double
myValue = InputBox("Prompt", "Title")
Range("C5").Value = myValue * Range("C1")
于 2018-11-20T11:59:27.753 回答
0

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

myValue = InputBox("Prompt", "Title")
Range("C5").Select
ActiveCell.FormulaR1C1 = myValue * Range("C1")
于 2018-11-20T04:28:34.427 回答