【问题标题】:Comma rather than dot in number format when using FormulaR1C1使用 FormulaR1C1 时数字格式中的逗号而不是点
【发布时间】:2020-05-14 09:20:45
【问题描述】:

我正在尝试在基于德语的 Excel 上运行宏。

这意味着,单元格 H3 的值为 0,8(在美国为 0.8)。

让 I4 被一个整数占据。

由于逗号分隔符,我在公式中遇到运行时错误:

Sub test()

Dim numb as Double

numb = Range("H3").Value * 23   ' numb = 18,4 and I cannot change it to 18.4

Range("H4").Select

ActiveCell.FormulaR1C1 = "=IF(RC[-1] < numb, ""ok"", ""not ok"")"

End Sub

我知道逗号是导致问题的原因。 VBA 需要 18.4 而不是 18,4。

有没有办法在 VBA 中解决这个问题,即不更改 Excel 的语言设置?

我尝试使用数字作为字符串,我用点等替换了逗号。

【问题讨论】:

    标签: excel vba format numbers


    【解决方案1】:

    FaneDuru 的回答: @alex:我在安装中更改了小数点分隔符(逗号),公式没有任何问题......

    “便宜”解决方案: 将 Range("H3").Value * 23 的结果存储在工作表单元格中,并在 VBA 代码中引用此单元格。然后,VBA 就知道如何正确处理数字了。

    【讨论】:

      【解决方案2】:

      恐怕“逗号”和您的问题之间没有任何联系。 Excel 知道如何处理小数分隔符...

      请试试这个方法:

      ActiveCell.FormulaR1C1 = "=IF(RC[-1] < " & numb & ", ""ok"", ""not ok"")"
      

      Excel 无法以您使用它的方式识别 numb。它必须由字符串的其余部分分隔。

      如果您确实需要更改小数分隔符,以便处理连接到某些字符串的内容,或者您​​想检查您的理论,您可以即时进行:

      Private Sub ChangeSep()     
       Application.DecimalSeparator = "."            
      
        'do here what you want testing
        'for instance: ActiveCell.value = CStr(1,00000001)
      
       Application .DecimalSeparator = ","
      End Sub
      

      【讨论】:

      • 谢谢,我忘了把正确的版本放在那里。但是这种连接也不起作用......
      • @alex:你什么意思? numb 返回什么值?
      • 抱歉混淆:ActiveCell.FormulaR1C1 = "=IF(RC[-1]
      • 我现在有一个“便宜”的解决方案:我现在将 Range("H3").Value * 23 的结果存储在工作表单元格中,并在 VBA 代码中引用此单元格。然后,VBA 就知道如何正确处理数字了。
      • @alex: 请尝试,在numb = Range("H3").Value * 23 之后插入下一行,并向我们展示dumb 值如何在即时窗口中显示:Debug.Print numb: Stop
      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 2016-06-18
      • 2017-05-13
      • 1970-01-01
      • 2015-07-20
      相关资源
      最近更新 更多