Excel动态范围包括Access代码和公式分隔符

Excel动态范围包括Access代码和公式分隔符,excel,ms-access,vba,Excel,Ms Access,Vba,我目前正在重写一些旧的Access代码,这些代码在excel工作簿中定义了命名范围。 旧代码如下: oWorkbook.Names.Add "NameOfRange", "='Sheet1'!$A$1:$L2000" 使用从Access打开的工作簿 由于范围(行数)可以更改,我计划使用Offset和CountA函数使用动态命名范围,并编写了以下代码来替换前面的代码: oWorkbook.Names.Add "NameOfRange", "=OFFSET('Sheet1'!$A$1,0,0,CO

我目前正在重写一些旧的Access代码,这些代码在excel工作簿中定义了命名范围。 旧代码如下:

oWorkbook.Names.Add "NameOfRange", "='Sheet1'!$A$1:$L2000"
使用从Access打开的工作簿

由于范围(行数)可以更改,我计划使用Offset和CountA函数使用动态命名范围,并编写了以下代码来替换前面的代码:

oWorkbook.Names.Add "NameOfRange", "=OFFSET('Sheet1'!$A$1,0,0,COUNTA('Sheet1'!$A:$A),12)"
但是excel发送了一个错误1004
,这个公式有问题

从Excel工作簿执行的同一行代码工作正常,并给出预期结果

在我的电脑上,我使用英语/法语混合的国际设置,我的Office 2016是英语的,所以我有一个列表分隔符,如

替换为
时,
,以下新公式有效:

oWorkbook.Names.Add "NameOfRange", "=OFFSET('Sheet1'!$A$1;0;0;COUNTA('Sheet1'!$A:$A);12)"
但我需要我的函数在每个配置上工作,而不仅仅是在法语/英语bizaroid设置上

我试图指定命名参数(
Name:=…
referesto:=…
),但这并没有纠正问题。当从Access调用时,代码仍然需要本地分隔符(可能还有本地函数名?不知道)


因此,我可以检索计算机excel列表分隔符(使用
oWorkbook.Application.International(xlListSeparator))
并用它替换公式中的所有
,但也许我做错了什么,还有更好的方法吗?

你说公式在excel上工作。它在你键入时工作,或者在你尝试使用vba填充单元格时工作?因为当你试图通过vba在单元格上插入公式时,excel有一些奇怪的交互作用。The代码不用于填充单元格,而是用于创建动态命名范围(请参阅)您说过公式在excel上有效。它在您键入时有效,或者在您尝试使用vba填充单元格时有效?因为当您尝试通过vba在单元格上插入公式时,excel会有一些奇怪的交互。代码不用于填充单元格,而是用于创建动态命名范围(请参阅)