如何使用 vba 创建命名范围?

要使用 VBA 创建命名范围,您需要通过“Add”方法进一步使用“Names”属性。在 add 方法中,您可以使用参数来定义要为范围指定的名称并指定范围的地址(请务必使用美元符号和地址来冻结范围)。

使用 VBA 创建名称范围

  1. 定义要在其中创建命名范围的工作簿。
  2. 使用名称属性,然后添加一个附加方法。
  3. 在“名称”参数中指定名称。
  4. 使用“ReferTo”参数引用范围。
使用 vba 创建名称范围

在上面的示例中,您有活动工作簿,然后使用“名称”属性和“添加”方法设置范围的名称,最后设置要使用的范围的地址。

前面说过,在地址范围内需要使用$符号来冻结地址。您还可以使用ThisWorkbook 来引用您在其中编写代码的工作簿,也可以使用工作簿对象来引用另一个工作簿。

VBA从选择中创建命名范围

您还可以使用选择属性从选择中创建命名范围。考虑以下代码。

 ActiveSheet.Names.Add Name:="myRangeName", RefersTo:=Selection

在下面的代码中,您有一个消息框,您可以在其中输入要为命名范围指定的名称。

 Sub vba_named_range() Dim iName As String iName = InputBox("Enter Name for the Selection.") ActiveSheet.Names.Add Name:=iName, RefersTo:=Selection End Sub

使用 VBA(动态命名范围)调整命名范围的大小

要调整工作表中已存在的命名范围的大小,必须使用 resize 属性并告诉 VBA 要从当前范围扩展多少行和列。考虑以下代码,它扩展了名为“myRange”的范围,该范围最初将单元格 A1 作为其范围,但将其大小调整为 M 列和第 11 行。

调整命名范围的大小
 Sub vba_named_range() Dim iRow As Long Dim iColumn As Long iRow = ActiveSheet.Range("A1").End(xlDown).Row iColumn = ActiveSheet.Range("A1").End(xlToRight).Column ActiveSheet.Range("myRange") _ .Resize(iRow, iColumn).Name = "myRange" End Sub

为了让您清楚地了解这一点,我将其分为三个部分,现在让我们开始吧。

分为三部分
  • 在第一部分中,您声明了用于存储行和列数的变量。
  • 在第二部分中,您使用了“END”方法和范围来获取最后一行和最后一列并将其存储为变量。
  • 在第三部分中,您使用了名为“myRange”的范围的 Resize 属性。之后是变量中的行号和列号。
声明用于存储行的变量

当您运行此代码时,它会根据您拥有的数据调整旧范围的大小,并使其成为动态命名范围。每当您需要更新它时,您都可以运行代码并调整现有命名范围的大小。

添加评论

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