vba - 范围有时只接受分号而不是逗号

标签 vba excel

我已将问题简化为以下代码示例。我使用的是德语 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 范围内的“本地选项”?

编辑:我只是尝试使用 CStr(a(i) 转换 a(i) ,但这也不起作用。所以不存在 ByRef 类型的问题。 ..

最佳答案

如果你想控制它,首先检查当前使用的分隔符。我猜你想知道列表分隔符:

Application.International(xlListSeparator)

在此处检查其他分隔符: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-international-property-excel

另一次我在 VBA 中识别小数点分隔符时遇到了问题。最后我能够以这种方式得到它:

Function GetVBAdecimalSep()
    Dim a(0) As Variant
    a(0) = 1 / 2
    GetVBAdecimalSep = Mid(a(0), 2, 1)
End Function

更改分隔符并不总是有效。请看这个:Changing decimal separator in VBA (not only in Excel)

最好的解决方案是检查/更改区域设置,即使是临时的。

Application.LanguageSettings.LanguageID(msoLanguageIDUI)

给出 LCID,对于英语(美国)为 1033

关于vba - 范围有时只接受分号而不是逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388465/

相关文章:

vba - excel vba 打开工作簿

Excel宏UI设计: How to let the user select several inputs

excel - 用基于另一个单元格值的非空白单元格填充空白单元格值

excel - 模拟简单的 VBA 宏以与 Google 表格兼容

arrays - Excel VBA 编译错误参数在遍历附加到类集合的数组时不是可选的

vba - ADO 库引用和向前兼容性

vba - VBA中从文本格式到日期格式的日期

excel - 从 Excel 中的 URL 中删除域

excel - 如何解决错误用户定义类型未定义?

vba - 将 protected 工作表宏应用于工作簿中的所有工作表