我已将问题简化为以下代码示例。我正在使用德语Excel版本,其中正常Excel公式中的分隔符是分号“;”而不是“,”(例如=SUMME(A1;A3)
而不是=SUM(A1,A3)
)。
现在其作品从不同的时间,以时间代码:范围有时只接受分号而不是逗号
Sub CommasDoNotWorkAnymore()
Dim a()
Dim i%
a = Array("A1,A3,A5", "B1", "B2")
i = 0
Debug.Print Sheets(1).Range(a(i)).Address
End Sub
通常情况下,启动Excel的时候,这个代码工作。但有时Excel似乎将Range()
中使用的分隔符切换为分号,直到我重新启动Excel。在运行时错误后重新运行代码时,会发生这种情况。
这是一个普通的Excel错误吗?有人知道这种行为背后是什么? Range
班有没有Excel的“本地选项”?
编辑:我只是试图转换a(i)
与CStr(a(i)
但这也行不通。所以没有ByRef类型的问题...
看起来这之前已经注意到LCID(美国):(http://stackoverflow.com/questions/29832281/vba-range-function -suddenly-accep-only-localized-arguments-pt-br) – CLR
我的Excel用户界面也使用分号。但是你的代码对我来说完美无瑕。当出现错误时,单击“调试”按钮并使用立即窗口查询相关变量 – user3598756
德国版Excel使用';'而不是''作为列表中的分隔符,因为','已在德国作为小数点分隔符因为“一半”写成“0,5”而不是“0.5”。我提到这一点是因为你说*有时*这种情况正在发生。所以,每当发生这种情况时,我想要求您检查Application.DecimalSeparator。如果','工作,'Application.DecimalSeparator'应该是'.'。但是,如果它不再工作,而是需要';'我假设'DecimalSeparator'也变为','。 – Ralph