在法语Excel中创建命名范围失败

在法语Excel中创建命名范围失败,excel,vba,localization,Excel,Vba,Localization,更新: 将refresto保存到变量中,并在设置注释后重新设置refresto似乎可以解决此问题 Public Sub TestOneFixed() Dim n As Name Dim s As String Set n = ActiveSheet.Names.Add("TestOne", ActiveSheet.Range("A1:E8")) Debug.Print n.RefersTo Debug.Print n.RefersToRange.Add

更新:

将refresto保存到变量中,并在设置注释后重新设置refresto似乎可以解决此问题

Public Sub TestOneFixed()

    Dim n As Name
    Dim s As String

    Set n = ActiveSheet.Names.Add("TestOne", ActiveSheet.Range("A1:E8"))
    Debug.Print n.RefersTo
    Debug.Print n.RefersToRange.Address

    Set n = ActiveSheet.Names.Add("TestTwo", ActiveSheet.Range("A10:E18"))
    Debug.Print n.RefersTo
    s = n.RefersTo
    n.Comment = "zoltan"
    Debug.Print n.RefersTo
    n.RefersTo = s
    Debug.Print n.RefersTo
    Debug.Print n.RefersToRange.Address

End Sub
更新: 在法语Excel版本1902(build 11328.20438)中,此代码失败:

Public Sub TestOne()

    Dim n As Name

    Set n = ActiveSheet.Names.Add("TestOne", ActiveSheet.Range("A1:E8"))
    Debug.Print n.RefersTo
    Debug.Print n.RefersToRange.Address

    Set n = ActiveSheet.Names.Add("TestTwo", ActiveSheet.Range("A10:E18"))
    Debug.Print n.RefersTo
    n.Comment = "zoltan"
    Debug.Print n.RefersTo
    Debug.Print n.RefersToRange.Address    '<--- error 1004 thrown here

End Sub
在我的英语Excel版本1910(build 12130.20344)中,同样的代码生成

=Sheet1!$A$1:$E$8
$A$1:$E$8
=Sheet1!$A$10:$E$18
=Sheet1!$A$10:$E$18
$A$10:$E$18

(问题的上一次迭代;对测试用例没有完整的用户反馈)-----------

在下面的代码中,我创建了一个命名的范围,并传入一个范围作为referesto参数。在英语Excel中工作良好(我碰巧使用的是64位Excel 365)。出于某种原因,即使即时窗口中的r.Address显示B3:E8,创建的命名范围也会显示“SheetName”!”L3C3':'L5C8'(不是精确的值),这是R1C1的法语版本。但是n.referestorange抛出一个错误,因为它不再将referesto识别为一个范围

这个问题大家都熟悉吗?有好的解决方法吗?到目前为止,我能说的最好的一点是,这个问题在应用程序代码中只出现过一个地方,我以前从未在英语方面看到过类似的情况

    Dim n As Name
    Dim r As Range
    Set r = ActiveSheet.Range("B3:E8")
    Set n = ActiveSheet.Names.Add("TestOne", r)
    debug.print n.RefersToRange.Columns.Count   '<--- error is here because RefersToRange does not return a Range reference
Dim n作为名称
调光范围
设置r=ActiveSheet.Range(“B3:E8”)
Set n=ActiveSheet.Names.Add(“TestOne”,r)

debug.print n.refrestorange.Columns.Count'错误消息是什么?错误是1004。问题是refrestorange不返回范围。我很早就无意中点击了save,并且已经完成了完整的文章。另一个暗中拍摄,为了排除您的客户机使用R1C1表示法,这在某种程度上弄乱了一些东西(谁知道呢),也许您可以在代码中将referencestyle设置为xlA1。请参阅Name.referesto将返回一个字符串。如果文本可以转换,Name.referestorange将返回一个范围。这就是为什么你可以看到=#REF!对话框中的A1:B10,并从referesto获取“=#REF!A1:B10”,但referestorange将出错。我强烈建议提供实际的相关代码,而不是简化代码——一些关键部分可能被遗漏了。
    Dim n As Name
    Dim r As Range
    Set r = ActiveSheet.Range("B3:E8")
    Set n = ActiveSheet.Names.Add("TestOne", r)
    debug.print n.RefersToRange.Columns.Count   '<--- error is here because RefersToRange does not return a Range reference