【问题标题】:Multiply VBA InputBox value (decimal) by cell value (decimal) derived from a Json url Web Query将 VBA InputBox 值(十进制)乘以从 Json url Web 查询派生的单元格值(十进制)
【发布时间】:2018-11-19 23:45:17
【问题描述】:

(更新)我是 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 Web 查询。我试过 Variant、Double、Single、Long 和数据类型 Decimal、Number 和 Currency。

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

【问题讨论】:

  • 您的代码有效。有什么问题?
  • 我认为您需要对用户输入的值进行错误检查。如果是字母数字怎么办?还是什么都没有?
  • 我收到运行时错误“13”。类型不匹配可能是因为单元格 C1 的值来自 Json Web 查询。我已经编辑了我的问题以包含查询代码。
  • C1 获得其值的来源无关紧要 - 重要的是 C1 的实际值。这就是我们需要回答的问题。

标签: excel vba decimal json-query


【解决方案1】:

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

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

【讨论】:

  • @kymadic - “它不起作用”不是一个有用的回应!
  • 但我在 excel 2016 中对此进行了测试,并且可以正常工作。你能解释一下你的问题吗?逐步调试代码 (F8) 并检查变量内容。
  • 我在 "new api version.xlsm" 中尝试了你的代码,但我仍然得到相同的运行时错误 '13': Type mismatch on the line which contains ActiveCell.FormulaR1C1 = myValue * Range("C1 ”)。输入和输出应包含十进制数。它适用于整数,但不适用于需要最多 6 个小数点的小数。在之前的“preferred version.xlsm”中根本不起作用。
【解决方案2】:

声明为 double 而不是变体

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

【讨论】:

  • 我尝试过 Double、Single、Long 和 Variant。没有工作,我需要输入 0.0012345 效果的数字
【解决方案3】:

找到解决方案:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2023-01-02
    相关资源
    最近更新 更多