gpt4 book ai didi

excel - 有没有办法在不知道 VBA Excel 中哪个工作表的情况下访问命名范围?

转载 作者:行者123 更新时间:2023-12-04 21:29:32 26 4
gpt4 key购买 nike

我有一张包含一列单元格的表格,每个单元格都引用一个命名范围。这些命名范围中的每一个都位于其他工作表上,我不知道它们在哪些工作表上,我只知道范围的名称。每个范围都有一个唯一的名称,因此不存在范围重复的风险,它们在名称管理器中可以清楚地识别。我希望 VBA 访问这些范围并更改它们的值。

平常的Range().select显然不起作用,因为我不知道范围在哪张纸上。我可以暴力破解它,并且对于每个命名范围都遍历每张纸以找到范围,但这显然效率很低。或者,如果我可以进入每个单元格所指的范围,也可以完成这项工作。

实际上,我有许多具有 =in_total_pop 等功能的单元格。我不知道 in_total_pop 保存在哪个工作表上,但我想访问 in_total_pop。

有没有办法做到这一点?在我看来,这是一个令人惊讶的简单任务,我很难想出一种方法来实现它。我是命名范围的粉丝,但如果不知道它们在哪张纸上就无法访问它们,那么这是一个很大的劣势。默认命名方法至少在名称中包含工作表地址(例如 ='All cost'!M29),然后可以通过 VBA 对其进行破译以找到范围。感谢您的帮助,如果我遗漏了一些明显的东西,请告诉我。

最佳答案

您可以使用 Names工作簿中的集合。

例如:ThisWorkbook.Names("Bob").RefersTo .有几个“refersTo…”选项可供选择。

进一步阅读:

  • https://docs.microsoft.com/en-us/office/vba/api/excel.workbook.names
  • https://docs.microsoft.com/en-us/office/vba/api/excel.names

  • 编辑:

    澄清一下,虽然我使用了 ThisWorkBoook在我的示例中, Names element 是 Workbook 中的一个内在集合目的。因此,如果您引用了其他一些工作簿,您仍然可以调用 Names功能。

    例如:
    Dim wb as Workbook
    Dim rng as Range
    Set wb = Application.Workbooks.Open("SomeFileName")
    Set rng = wb.Names("Bob").RefersToRange

    关于excel - 有没有办法在不知道 VBA Excel 中哪个工作表的情况下访问命名范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57760120/

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