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

Edg*_*yan 9 excel vba excel-vba regional-settings

我是否理解正确,如果我使用像这样的命令

Set myRange.formula = “=ROW(mySheet!R12)” 
Run Code Online (Sandbox Code Playgroud)

我的宏将导致#NAME?单元格出现错误,如果它运行在俄语Excel上.我的意思是在这种情况下,上面的公式应该是硬编码的

Set myRange.formula = “=??????(mySheet!R12)”
Run Code Online (Sandbox Code Playgroud)

其中СТРОКА是SUM函数的俄语模拟.我不希望Excel足够聪明,可以在运行时翻译公式.那么有什么方法可以解决这个问题,最重要的是,无论languange如何,使宏工作正常的最通用的代码是什么?

小智 15

VBA非常以EN-US为中心.VBA的.Formula.FormulaR1C1期望ROW功能.要使用区域语言函数'flavors',如СТРОКА,则应使用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)"
Run Code Online (Sandbox Code Playgroud)

  • 如果您的Office安装是RU-RU或除EN-US之外的任何其他设备,则不会.但是,`myRange.Formula ="= ROW(mySheet!$ 12:$ 12)"`**将适用于任何系统.(不要使用`Set`指定公式) (2认同)