我有以下代码:
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,则没有错误。我该怎么做才能解决这个问题?
答案 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])"