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.创建命名范围
首先,通过执行以下过程为范围创建一个名称。公式 > 名称管理器 > 新建…跑步(见下图)
在“新名称”窗口中,设置名称、范围、描述和参考目标。
这里的“scope”表示范围,指的是名字,可以二选一。
- 工作表(例如 Sheet1):只能通过写在该工作表上的 VBA 代码中的名称来引用
- Workbook:Full sheet、module、class等可按名称引用
作为参考,在复制工作表时将工作表中定义的名称一起复制。此时,如果需要在多个工作表中引用同一个名字,就设置为“工作表”,如果不需要引用同一个名字,就设置为“工作簿”。创建名称时,您可以按如下方式检查结果。
如果选择定义名称的单元格,名称将显示在名称框中。
如果选择名称未定义的单元格,则单元格的绝对地址将显示在名称框中。
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编码有所帮助,如有疑问欢迎留言。