2016-05-20 87 views
4

我有以下代码:麻烦与数字格式

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])" 

tarifa使用逗号作为小数分隔(1,5-例如)保存,所以当VBA尝试写入该式中,它会引发错误。如果我手动将tarifa替换为1.5,则不会出现错误。我能做些什么来解决这个问题?

回答

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])" 
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,",",".") 
+0

这可能有效,但我最终通过用CStr(tarifa)替换tarifa来解决它。 –

2

一种方法是使用的FormulaR1C1Local代替FormulaR1C1

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

公式的语法也错了。 –

+0

这不起作用,因为Excel文件的原始语言不是英语,因此它不承认公式(因为它们是英文的)。我通过用CStr(tarifa)替换tarifa来解决它。 –