从VBA插入公式时会出现不同的语言问题
我是否正确理解,如果我使用如下命令从VBA插入公式时会出现不同的语言问题,vba,excel,regional-settings,Vba,Excel,Regional Settings,我是否正确理解,如果我使用如下命令 Set myRange.formula = “=ROW(mySheet!R12)” 如果在俄文Excel上运行,我的宏将导致单元格中出现#NAME?错误。 我的意思是,在这种情况下,上面的公式应该硬编码为 Set myRange.formula = “=СТРОКА(mySheet!R12)” 式中,ССППССА是求和函数的俄文类似物。我不认为Excel足够聪明,可以在运行时翻译公式。 那么,有没有办法解决这个问题?最重要的是,无论使用何种语言,最通用
Set myRange.formula = “=ROW(mySheet!R12)”
如果在俄文Excel上运行,我的宏将导致单元格中出现#NAME?
错误。
我的意思是,在这种情况下,上面的公式应该硬编码为
Set myRange.formula = “=СТРОКА(mySheet!R12)”
式中,ССППССА是求和函数的俄文类似物。我不认为Excel足够聪明,可以在运行时翻译公式。
那么,有没有办法解决这个问题?最重要的是,无论使用何种语言,最通用的代码是什么,都可以使宏正常工作?VBA非常以英语为中心。VBA的和期望的。要使用区域语言功能“风味”,则应使用or 列表分隔符字符也是如此。无论系统区域设置如何,在使用.Formula或.formula1c1时,使用逗号(例如,
,
)分隔函数中的参数。如果您的系统使用分号(例如,;
)作为列表分隔符,则只能与.FormulaLocal或.FormulaR1C1Local一起使用
工作表上的结果将正确反映Office安装的语言设置
myRange.Formula = "=ROW(mySheet!$12:$12)"
myRange.FormulaR1C1 = "=ROW(mySheet!R12)"
myRange.FormulaLocal = "=СТРОКА(mySheet!$12:$12)"
myRange.FormulaR1C1Local= "=СТРОКА(mySheet!R12)"
那么,我是否正确地理解您,使用.FormulaLocal将使我的代码完全可行,并且不依赖于languange系统?那么为什么我们需要这个方法?公式呢?)为什么他们不将.FormulaLocal的功能性集成到方法中?公式?)奇怪的是,应该是这样的。所有必要的是确保您正在使用或适当地使用。您的样本中的
R12
参考有点模棱两可;我希望我猜对了。此外,公式中的任何引号都需要加倍,因为它们将位于带引号的字符串中。e、 g.=“abc”
变为.FormulaLocal=“=“abc”“”
。如果您的Office安装是RU-RU或EN-US以外的任何东西,则不会。但是,myRange.Formula=“=行(mySheet!$12:$12)”
将在任何系统上工作。(不要使用Set
指定公式)谢谢,谢谢,谢谢。我一直在努力让它与公式
一起工作。我完全没有想到它应该是,“
而不是;”
。我通常在VBA调试器中查找值,但在一千年内,我无法想象微软在Formula
和FormulaLocal
之间有这样的区别。我知道他们很奇怪,但是这个奇怪。。。