【问题标题】:Get Named Range Values获取命名范围值
【发布时间】:2019-11-06 19:09:44
【问题描述】:

我有两个具有许多相同命名范围的工作簿,我需要将值从第二个工作簿移动到第一个工作簿。我可以通过指定范围所在的工作表和范围名称来做到这一点,但是大约有 200 个命名范围分布在 20 个左右的工作表上,我只需要其中 11 个工作表上的命名范围。我可以花时间弄清楚并硬编码移动每一个,但我真的希望它是一个大部分自动化的过程。这样,如果添加了新范围,它就可以自动完成,我不必更新代码。

我目前的代码是:

For Each Name In sheetList
    Set sheet2vals = sheet2.Sheets(Name).Range(rangename)
    Set sheet1vals = sheet1.Sheets(Name).Range(rangename)
    sheet2vals.Copy sheet1vals
Next Name

sheetList 是一个工作表名称数组,其中存储了所有范围。该部分完全按照我的需要工作,我只需要找到一种方法从每张纸上拉出范围并移动它们。但是,我似乎能找到获取命名范围列表的唯一方法是在工作簿级别拉动,这并不能告诉我它在哪个工作表上。

【问题讨论】:

  • 这 11 张纸(目标纸)与其他纸有何不同?您必须设置一个循环来自动执行此过程。因此我们需要一些条件。
  • 每个Name 都有一个RefersToRange 属性,它为您提供一个Range 对象,每个Range 都有一个Parent 属性,它为您提供它所属的Worksheet
  • @MathieuGuindon 这正是我所需要的。如果您想将此移至回复,我会将其标记为已接受。

标签: excel vba


【解决方案1】:

每个Name 都有一个RefersToRange 属性,该属性为您提供Range 对象,每个Range 都有一个Parent 属性,为您提供它所属的Worksheet

因此,如果您有一个 Name 对象,您始终可以知道它所指的工作表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多