gpt4 book ai didi

范围为工作簿的 Excel 命名范围从工作表范围命名范围打印

转载 作者:行者123 更新时间:2023-12-04 22:29:31 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com