提问人:Edgar Navasardyan 提问时间:3/1/2016 最后编辑:newishuserEdgar Navasardyan 更新时间:5/6/2016 访问量:11972
从VBA插入公式时出现不同的语言问题
Different languages issue when inserting formula from VBA
问:
我是否正确理解,如果我使用像这样的命令
Set myRange.formula = “=ROW(mySheet!R12)”
如果我的宏在俄语 Excel 上运行,它会导致单元格中出现错误。
我的意思是,在这种情况下,上面的公式应该像#NAME?
Set myRange.formula = “=СТРОКА(mySheet!R12)”
其中 СТРОКА 是 SUM 函数的俄语类似物。我不认为 Excel 足够聪明,可以在运行时翻译公式。 那么有什么方法可以解决这个问题,最重要的是,什么是最通用的代码可以使宏正常工作,而不管语言如何?
答:
22赞
user4039065
3/1/2016
#1
VBA 非常以 EN-US 为中心。VBA 的 .公式和 .FormulaR1C1 需要 ROW 函数。若要使用区域语言函数“风格”(如 СТРОКА),则应改用 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)"
评论
0赞
Edgar Navasardyan
3/1/2016
所以,我是否正确地理解了你,使用 .FormulaLocal 将使我的代码绝对可行,并且不依赖于语言系统?
0赞
Edgar Navasardyan
3/1/2016
那我们为什么需要这个方法呢?公式是什么?他们为什么不整合 .FormulaLocal 添加到方法中。公式 ?够奇怪的
0赞
3/1/2016
是的,它应该。所需要做的就是确保您使用的是 .FormulaLocal 或 .FormulaR1C1Local 适当地。样本中的参考文献有点模棱两可;我希望我猜对了。此外,公式中的任何引号都需要加倍,因为它们将位于带引号的字符串中。例如 成为。R12
="abc"
.FormulaLocal = "=""abc"""
3赞
3/1/2016
如果您的 Office 安装是 RU-RU 或 EN-US 以外的任何安装,则不会。但是,适用于任何系统。(不要用于分配公式)myRange.Formula = "=ROW(mySheet!$12:$12)"
Set
1赞
244an
11/29/2017
谢谢,谢谢,谢谢。我一直在为无法使用它而苦苦挣扎.我完全错过了它应该而不是.我通常在 VBA 调试器中查找值,但在一千年后我无法想象 Microsoft 在 和 之间有这种差异。我知道他们很奇怪,但这个奇怪的......Formula
","
";"
Formula
FormulaLocal
评论