.Formula Runtime错误1004在某些计算机上而不是在其他计算机上

时间:2018-11-15 03:26:04

标签: excel vba excel-vba excel-formula

我将直奔主题。这是使我感到震惊的行代码:

ThisWorkbook.Worksheets("Dados").Cells(16, 10).FormulaLocal = "=-(I16)+" & a & "+(" & c & "*((" & PiZi & " ^ " & d & ")*(I16 ^ " & d & ")/(" & Pc & " ^ " & d & ")))"

以上代码可在我的家用计算机(已创建)上运行,而不能在我的实验室或工作计算机上使用

ThisWorkbook.Worksheets("Dados").Cells(16, 10).Formula = "=-(I16)+" & a & "+(" & c & "*((" & PiZi & " ^ " & d & ")*(I16 ^ " & d & ")/(" & Pc & " ^ " & d & ")))"

第二个可以在我的实验室和工作计算机上工作,但不能在我的家用计算机上工作。 唯一的区别是Formula和FormulaLocal。我知道FormulaLocal可能会给我错误,因为不同版本的excel可能具有不同的语言....但是Formula不应该在任何地方都可以工作吗?

此外,如果我将单元更改为R16C9而不是I16,则它可以在我的家用计算机中工作,而在其他计算机中则存在错误。我真的想要一个可以在这里随处使用的代码。有人可以帮忙吗?谢谢

P.S .:变量都可以并定义得很好,但是问题可能是它们有小数,因此逗号或点号会引起问题

Debug.Print(使用FormulaLocal)给我:

=-(I16)+0,549840740436919+(0,0513418101762096*((604,958825198337 ^ 1,04086742681856)*(I16 ^ 1,04086742681856)/(49,44 ^ 1,04086742681856)))

1 个答案:

答案 0 :(得分:0)

可能有更好的解决方案,主要是使用if的愚蠢方式,但这现在适用于我拥有的每台计算机。谢谢大家。

...
bloqueio = 5
On Error GoTo alternativa
ThisWorkbook.Worksheets("Dados").Cells(16, 10).Formula = "=-(I16)+" & a & "+(" & c & "*((" & PiZi & " ^ " & d & ")*(I16 ^ " & d & ")/(" & Pc & " ^ " & d & ")))"
If bloqueio = 0 Then
alternativa:
    On Error GoTo -1
    On Error GoTo Erro
ThisWorkbook.Worksheets("Dados").Cells(16, 10).FormulaLocal = "=-(I16)+" & a & "+(" & c & "*((" & PiZi & " ^ " & d & ")*(I16 ^ " & d & ")/(" & Pc & " ^ " & d & ")))"
End If
On Error GoTo -1
...