数字格式有问题

时间:2016-05-20 00:41:38

标签: vba excel-vba format decimal excel

我有以下代码:

Dim tarifa As Double
tarifa = Sheets("OD Tarifa").Cells(fila, 5 + r).value
Cells(j, r + 10).FormulaR1C1 = _
                "=" & tarifa & "-" & "SUMIF(C[-6],RC[-6],C[-3])+SUMIF(C[-6],RC[-6],C[-2])+SUMIF(C[-6],RC[-6],C[-1])"

使用逗号作为小数分隔符(例如1,5)保存tarifa时,因此当VBA尝试编写公式时,会抛出错误。例如,如果我手动将tarifa替换为1.5,则没有错误。我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:2)

一种方法是使用FormulaR1C1Local代替FormulaR1C1

Dim tarifa As Double
tarifa = Cells(1, 2).Value
Cells(2, 2).FormulaR1C1Local = "=" & tarifa

答案 1 :(得分:1)

如果在Excel 2013或更高版本中,请尝试使用NUMBERVALUE功能。它允许您在您正在阅读的数字中指定小数和千位分隔符。我认为这可以让你从逗号小数分隔符切换到VBA想要的时间段:

tarifa = worksheetfunction.NumberValue(Sheets("OD Tarifa").Cells(fila, 5 + r).value,",",".")

如果这不适用,您应该能够使用查找和替换来修复它:

tarifa = replace((Sheets("OD Tarifa").Cells(fila, 5 + r).value,",",".")

答案 2 :(得分:0)

我是如何最终解决的:

Dim tarifa As Double
tarifa = Sheets("OD Tarifa").Cells(fila, 5 + r).value
Cells(j, r + 10).FormulaR1C1 = _
                "=""" & CStr(tarifa) & """-" & "SUMIF(C[-6],RC[-6],C[-3])+SUMIF(C[-6],RC[-6],C[-2])+SUMIF(C[-6],RC[-6],C[-1])"
相关问题