VBA可变范围| Excel VBA中的可变范围示例

范围内的Excel VBA变量

变量是任何大型VBA项目的核心,因为变量是核心,因此我们分配给它们的数据类型在这方面也是一个非常重要的因素。在我们之前的许多文章中,我们讨论了很多关于变量及其数据类型重要性的时间。这样的变量和数据类型就是“ Range Variable”,在这篇特别的专门文章中,我们将为excel VBA中的“ Range Variable”提供完整的指南。

什么是Excel VBA中的范围变量?

与VBA中的所有其他变量Range一样,该变量也是变量,但是它是一个“对象变量”,用于设置特定单元格范围的参考。

像任何其他变量一样,我们可以为变量指定任何名称,但我们分配给它们的数据类型应为“ Range”。一旦将分配给变量的数据类型变为“对象变量”,并且与另一个变量不同,在使用对象变量的情况下,在设置对象的引用之前我们无法开始使用该变量。

因此,在声明变量后,我们需要使用 “放” 关键字以设置对象引用,即在这种情况下为Range对象。

好的,现在我们将实际看到一些excel VBA范围变量的示例。

Excel VBA中范围变量的示例

您可以在此处下载此VBA可变范围Excel模板– VBA可变范围Excel模板

例如,假设您要为下面的屏幕截图图像选择从A2到B10的单元格范围。

为了在我们有RANGE对象且在range对象内部时选择所有上述提到的单元格范围,我们用双引号提及了单元格地址。

代码:

 Sub Range_Variable_Example()范围(“ A2:B10”)结束Sub 

一旦使用RANGE对象提到了单元格的范围(如果您放置点),我们将看到与此范围对象关联的所有属性和方法。

代码:

 子Range_Variable_Example()范围(“ A2:B10”)。结束子 

由于我们需要选择提到的单元格,因此只需从IntelliSense列表中选择“选择”方法即可。

代码:

 Sub Range_Variable_Example()Range(“ A2:B10”)。Select End Sub 

运行代码,它将选择提到的单元格。

这不是很明显,但是想像一下在漫长的VBA项目中使用相同范围的情况,假设数百次,编写相同的代码, “范围(“ A2:A10”))” 100次将花费一些时间,但是相反,我们将声明变量并将数据类型分配为“ Range”对象。

好的,让我们给变量起一个自己的名字,然后将数据类型分配为“ Range”。

除了“对象变量”之外,我们可以按名称开始使用变量,但是对于“对象变量”,我们需要设置引用。

例如,在这种情况下,我们的变量(Rng)对象是range,因此我们需要设置引用“ Rng”将要引用的单词。要设置参考,我们需要使用“ Set”关键字。

现在变量“ Rng”是指从A2到B10的单元格范围,而不是写 “范围(“ A2:B10”))” 每次我们可以简单地写一个词 “ Rng”.

在下一行中,提及变量名称“ Rng”,并加一个点以查看其含义。

如上所示,我们可以看到范围对象的所有属性和方法,就像上一个一样。

使变量动态化

现在,我们知道了如何将参考值设置为细胞范围,但是一旦我们提到了细胞范围,它仅粘附于那些细胞,任何细胞的添加或删除都不会影响这些细胞。

因此,在添加或删除细胞后找到新的细胞范围会使变量本质上具有动态性。通过找到最后使用的行和列,可以做到这一点。

为了找到最后使用的行和列,我们需要定义另外两个变量。

代码:

 Sub Range_Variable_Example()Dim Rng作为范围Dim LR作为Long'LR =用于理解Dim LC的最后一行作为Long'LC =用于理解End Sub的最后一列 

现在,下面的代码将在我们将引用设置为范围对象变量之前找到最后使用的行和列。

代码:

 Sub Range_Variable_Example()Dim Rng作为范围Dim LR作为Long'LR =用于理解Dim LC的最后一行Long'LC =用于理解LR的最后一列=单元格(Rows.Count,1).End(xlUp).Row LC =单元格(1,Columns.Count).End(xlToLeft).Column End子对象 

现在打开“设置”关键字语句。

代码:

 Sub Range_Variable_Example()Dim Rng作为范围Dim LR作为Long'LR =用于理解Dim LC的最后一行Long'LC =用于理解LR的最后一列=单元格(Rows.Count,1).End(xlUp).Row LC =单元格(1,Columns.Count).End(xlToLeft).Column Set Rng = End Sub 

与以前的方法不同,这次我们使用VBA CELLS属性。

代码:

 Sub Range_Variable_Example()Dim Rng作为范围Dim LR作为Long'LR =用于理解Dim LC的最后一行Long'LC =用于理解LR的最后一列=单元格(Rows.Count,1).End(xlUp).Row LC =单元格(1,Columns.Count).End(xlToLeft).Column Set Rng = Cells(1,1)End Sub 

我已经提到了Cells(1,1),即它是指活动工作表中的第一个单元格,但我们需要引用数据范围,因此请使用“ RESIZE”属性并提及“最后使用的行和列”变量。

代码:

 Sub Range_Variable_Example()Dim Rng作为范围Dim LR作为Long'LR =用于理解Dim LC的最后一行Long'LC =用于理解LR的最后一列=单元格(Rows.Count,1).End(xlUp).Row LC =单元格(1,Columns.Count).End(xlToLeft).Column Set Rng = Cells(1,1).Resize(LR,LC)End Sub 

现在,这将为范围对象变量“ Rng”设置最新引用。接下来,提及变量名称并使用“选择”方法。

 Sub Range_Variable_Example()Dim Rng作为范围Dim LR作为Long'LR =用于理解Dim LC的最后一行Long'LC =用于理解LR的最后一列=单元格(Rows.Count,1).End(xlUp).Row LC =单元格(1,Columns.Count).End(xlToLeft).Column Set Rng = Cells(1,1).Resize(LR,LC)Rng.Select End Sub 

现在,我将在数据中添加几行。

如果我现在运行代码,我已经添加了三行数据,它应该选择最新的数据范围。

要记住的事情

  • Excel VBA中的range变量是一个对象变量。
  • 每当我们使用对象变量时,都需要使用“ Set”关键字并将对象引用设置为该变量。
  • 如果不设置引用,我们将无法使用对象变量。