我是否理解正确,如果我使用像
这样的命令Set myRange.formula = “=ROW(mySheet!R12)”
我的宏会在单元格中出现#NAME?
错误,如果它运行在例如俄语Excel上。
我的意思是在这种情况下,上面的公式应该像
Set myRange.formula = “=СТРОКА(mySheet!R12)”
其中СТРОКА是SUM函数的俄语模拟。我不希望Excel足够聪明,可以在运行时翻译公式。 那么有什么方法可以解决这个问题,最重要的是,无论languange如何,使宏工作正常的最通用代码是什么?
答案 0 :(得分:13)
VBA非常以EN-US为中心。 VBA的.Formula和.FormulaR1C1期待ROW function。要使用СТРОКА等区域语言功能“风味”,则应使用Range.FormulaLocal property或Range.FormulaR1C1Local property代替。
列表分隔符也是如此。无论系统区域设置如何,在使用.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)"