我将直奔主题。这是使我感到震惊的行代码:
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)))
答案 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
...