在法语Excel中创建命名范围失败
更新: 将refresto保存到变量中,并在设置注释后重新设置refresto似乎可以解决此问题在法语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
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