Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从VBA插入公式时会出现不同的语言问题_Vba_Excel_Regional Settings - Fatal编程技术网

从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
之间有这样的区别。我知道他们很奇怪,但是这个奇怪。。。