从VBA插入公式时出现不同的语言

我是否正确理解,如果我使用类似的命令

Set myRange.formula = “=ROW(mySheet!R12)” 

我的macros会导致#NAME? 错误出现在单元格中,例如俄语Excel。 我的意思是在这种情况下,上面的公式应该是硬编码的

 Set myRange.formula = “=СТРОКА(mySheet!R12)” 

其中СТРОКА是SUM函数的俄语模拟。 我不希望Excel能够足够聪明地在运行时翻译公式。 那么有没有什么办法可以解决这个问题,而且最重要的是,什么是最通用的代码,使得macros不pipe语言如何都能正常工作?

VBA非常以美国为中心。 VBA的.Formula和.FormulaR1C1期望ROWfunction 。 要使用像СТРОКА这样的区域性语言function“风味”,应该使用Range.FormulaLocal属性或Range.FormulaR1C1Local属性 。

列表分隔符也是如此。 使用.Formula或.FormulaR1C1时,使用逗号(例如)分隔函数中的参数,而不考虑系统区域设置。 如果您的系统使用分号(例如; )作为列表分隔符,则只能与.FormulaLocal或.FormulaR1C1Local一起使用。

工作表上的结果将正确反映Office安装的语言设置。

 myRange.Formula = "=ROW(mySheet!$12:$12)" myRange.FormulaR1C1 = "=ROW(mySheet!R12)" myRange.FormulaLocal = "=СТРОКА(mySheet!$12:$12)" myRange.FormulaR1C1Local= "=СТРОКА(mySheet!R12)"