VBA 编码模式:命名范围

即使在VBA编码时改变了Range的引用地址,如果使用Named Range(命名范围),无论引用地址如何改变,都可以防止源代码发生变化。让我们看看下面的内容。

1.使用绝对地址的范围引用

在Excel VBA中引用Range的众多方法中,最常用的方法如下。

Dim sVal As String
sVal = Range("B2").Value2
Debug.Print sVal

在Range(“B2”)中,“B2”表示Excel表格中的单元格绝对地址。通过更改工作表的形式添加行或列时,必须将“B2”更改为“B3”或“C2”。如果单元格绝对地址仅在 VBA 代码中的一处,则可以轻松更改。

如果要引用的区域的变化不影响 VBA 代码的变化,则为该区域指定一个名称,以便 VBA 代码引用该名称而不是单元格的绝对地址,如果引用的位置发生变化,则name 您可以更改在 中指定的单元格地址。

2. 按名称引用范围

2.1.创建命名范围

首先,通过执行以下过程为范围创建一个名称。公式 > 名称管理器 > 新建…跑步(见下图)

그림1. 이름 생성
图1。创建名称

在“新名称”窗口中,设置名称、范围、描述和参考目标。

그림2. 이름 설정
图 2。设置名称

这里的“scope”表示范围,指的是名字,可以二选一。

  • 工作表(例如 Sheet1):只能通过写在该工作表上的 VBA 代码中的名称来引用
  • Workbook:Full sheet、module、class等可按名称引用

作为参考,在复制工作表时将工作表中定义的名称一起复制。此时,如果需要在多个工作表中引用同一个名字,就设置为“工作表”,如果不需要引用同一个名字,就设置为“工作簿”。创建名称时,您可以按如下方式检查结果。

그림3. 이름 생성 결과
图 3。名称创建结果

如果选择定义名称的单元格,名称将显示在名称框中。

그림4. 이름이 부여된 범위 선택시 해당 이름 표시
图 4。选择命名范围时显示名称

如果选择名称未定义的单元格,则单元格的绝对地址将显示在名称框中。

그림5. 이름이 부여되지 않은 범위 선택시 범위 절대주소 표시
图 5。选择未命名范围时,会显示该范围的绝对地址。

2.2.写名字参考代码

定义名称后,编写引用定义名称的 VBA 代码。一个简单的例子是:

Dim sVal As String
sVal = Range("BaseRange").Value2
Debug.Print sVal

2.3.使用名字的好处

如果更改了绝对地址,则可以更改相应名称所指的绝对地址。这很方便,因为不需要查找和更改整个 VBA 源代码。

添加或删除列或行时,名称所指的绝对地址会自动更改。例如,如果有一个名称引用单元格“B2”,则在第 1 行和第 2 行之间添加一行将自动将其更改为“B3”。

提高阅读 VBA 代码时的可读性。想知道源代码中的“B2”是什么意思,得打开sheet看,但是如果用“BaseRange”、“TableListBase”、“ColumnListBase”、“ValueListBase”等名称,就可以理解了不用打开表格的意思。这使它更简单

附加信息 使用 Excel 名称管理器 (microsoft.com) 可以在


在上面,我们了解了使用 Range 名称的方法和优点。希望对大家进行VBA编码有所帮助,如有疑问欢迎留言。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

zh_CN简体中文