作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
MVCE 在新创建的 3 个工作表工作簿中。其中 sheet1 和 sheet2 上的名称 foo
已创建,范围分别为每个工作表。之后,在工作簿的范围内,引用 sheet3 时使用相同的名称。访问工作簿范围名称时,我在 sheet2 上获得了名称,但不明白为什么。
我有什么明显的遗漏吗?
Public Sub NameConfusion()
Do While ThisWorkbook.Names.Count > 0
ThisWorkbook.Names(1).Delete
Loop
AddNames
Debug.Print ThisWorkbook.Names("foo").RefersToRange.Address(False, False) ' --> B2 NOT expected
'I would expect it to be C5
ThisWorkbook.Names("foo").Delete
Debug.Print ThisWorkbook.Names("foo").RefersToRange.Address(False, False) ' --> C5 NOT expected, based on above
'I would expect it to be B2
End Sub
Private Sub AddNames()
Sheet1.Names.Add "foo", Sheet1.Range("a2")
Debug.Print ThisWorkbook.Names.Count ' --> 1 as expected
Sheet2.Names.Add "foo", Sheet2.Range("B2")
Debug.Print ThisWorkbook.Names.Count ' --> 2 as expected
ThisWorkbook.Names.Add "foo", Sheet3.Range("C5")
Debug.Print ThisWorkbook.Names.Count ' --> 3 as expected
End Sub
Debug.Print
调用
AddNames
后仍将导致打印非工作簿范围的地址。
最佳答案
当它寻找 foo
它首先在本地范围内查找,从第一个物理放置的工作表开始,即最左边。我猜你的 B2 foo
表在最左边。删除后找不到 foo
在该工作表的本地,因此进入工作簿范围。这也适用于删除。您可以通过切换工作表的物理顺序进行测试,您会看到根据顺序得到不同的结果。一个简单的解决方法似乎是尽可能使用不同的名称。
关于范围为工作簿的 Excel 命名范围从工作表范围命名范围打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54374692/
我是一名优秀的程序员,十分优秀!