VBA UsedRange |如何找到已用行数和列数?

顾名思义,UsedRange是范围,作为它们中的某种值,空单元格不包括在使用的范围中,因此在VBA中,Used range是VBA中范围对象的属性,用于VBA中的那些范围行和列不为空,并且其中包含一些值。

VBA Excel中的UsedRange

VBA中的UsedRange是工作表的属性,该属性返回一个范围对象,该对象表示特定工作表上使用的范围(工作表中使用或填充的所有Excel单元格)。它是代表工作表中左上使用的单元格和最后右使用的单元格所覆盖或限制的区域的属性。

我们可以将“使用的单元格”描述为包含任何公式,格式,值等的单元格。我们还可以通过按键盘上的CTRL + END键来选择最后使用的单元格。

以下是工作表中的UsedRange的图示:

我们可以在上面的屏幕截图中看到,UsedRange是A1:D5。

Excel VBA UsedRange属性的示例

让我们看下面的一些示例,以了解如何使用工作表中的UsedRange属性在VBA中查找已使用范围:

您可以在此处下载此VBA UsedRange Excel模板– VBA UsedRange Excel模板

范例#1

假设我们有一个包含两个工作表的Excel文件,我们希望在Sheet1上找到并选择使用的范围。

让我们看看Sheet1包含什么:

我们使用VBA立即窗口中的UsedRange属性来完成此任务。 VBA立即窗口是一种工具,即使用户没有编写任何宏,它也可以帮助获取有关Excel文件的信息,快速执行或调试任何VBA代码。它位于Visual Basic编辑器中,可以按以下方式访问:

  • 转到“开发人员”选项卡Excel,然后单击“ Visual Basic编辑器”,或 按Alt + F11 打开Visual Basic编辑器窗口。

为此,将打开一个窗口,如下所示:

  • 按Ctrl + G 打开立即窗口,然后键入代码。

立即窗口如下所示:

  • 下面的代码将在Sheet1上选择使用的范围

代码:

?Worksheets(“ Sheet1”)。激活True?ActiveSheet.UsedRange.Select True

该代码的第一条语句将激活文件的Sheet1,第二条语句将在该活动表中选择已使用的范围。

在编写此代码时,我们看到Sheet1中使用的范围如下选择:

范例#2

现在,假设在此示例中,我们希望找到Sheet1中使用的总行数。为此,请按照以下步骤操作:

  • 在模块中创建一个宏名称。

代码:

 子TotalRows()结束子 

  • 在VBA中将变量TotalRow定义为Integer:

代码:

 Sub TotalRows()Dim TotalRow作为整数End Sub 

  • 现在为变量TotalRow分配公式,以计算总行数:

代码:

 Sub TotalRows()将TotalRow设置为整数TotalRow = ActiveSheet.UsedRange.Rows.Count End Sub 

  • 现在,可以使用VBA消息框(MsgBox)显示和返回TotalRow的结果值,如下所示:

代码:

 Sub TotalRows()将TotalRow设置为整数TotalRow = ActiveSheet.UsedRange.Rows.Count MsgBox TotalRow End Sub 

  • 现在,我们手动或通过按F5键运行此代码,并获得在“消息框”中显示的Sheet1中使用的总行数,如下所示:

因此,我们可以在上面的屏幕截图中看到消息框中返回了“ 5”,正如我们在Sheet1中所看到的,使用范围内的总行数为5。

例子#3

同样,如果我们希望找到在Sheet1中使用的总列数,我们将执行与上述相同的步骤,只是代码稍有变化,如下所示:

代码:

 Sub TotalCols()将TotalCol转换为整数TotalCol = ActiveSheet.UsedRange.Columns.Count MsgBox TotalCol End Sub 

现在,当我们手动或通过按F5键运行此代码时,将得到在“消息框”中显示的Sheet1中使用的总列数,如下所示:

因此,在消息框中返回“ 4”,正如我们在Sheet1中所看到的,使用范围内的列总数为4。

例子#4

现在,假设我们希望在文件的Sheet2中找到最后使用的行号和列号。让我们看看Sheet2包含哪些内容:

为此,我们按照以下步骤操作:

  • 在模块中创建一个宏名称。

代码:

 Sub LastRow()结束Sub 

  • 将变量LastRow定义为Integer。

代码:

 Sub LastRow()Dim LastRow作为整数End Sub 

  • 现在为变量LastRow分配公式,以计算上次使用的行号:

代码:

 Sub LastRow()Dim LastRow As Integer LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row End Sub 

Excel VBA中的SpecialCells方法返回一个范围对象,该对象仅表示指定的单元格类型。 SpecialCells方法的语法为:

RangeObject.SpecialCells(类型,值)

在上面的代码中,xlCellTypeLastCell:表示使用范围中的最后一个单元格。

笔记: “ xlCellType”甚至会包含已更改其所有单元格默认格式的空单元格。
  • 现在,可以使用消息框(MsgBox)显示和返回LastRow数字的结果值,如下所示:

代码:

 Sub LastRow()Dim LastRow As Integer LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row MsgBox LastRow End Sub 

  • 现在,我们手动或通过按F5键运行此代码,然后在Sheet2中获得上次使用的行号,显示在消息框中,如下所示:

因此,我们可以在上面的屏幕截图中看到消息框中返回了“ 12”,正如我们在Sheet2中所看到的,上次使用的行号是12。

同样,如果我们希望在Sheet2中找到最后使用的列号,我们将执行与上述相同的步骤,只是对代码稍作更改,如下所示:

代码:

 Sub LastCol()Dim LastCol As Integer LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column MsgBox LastCol End Sub 

现在,当我们手动或通过按F5键运行此代码时,我们将在Sheet2中获得上次使用的列号,显示在消息框中,如下所示:

因此,我们可以在上面的屏幕截图中看到消息框中返回了“ 3”,就像我们在Sheet2中看到的那样,最后使用的列号是3。

关于VBA UsedRange的注意事项

  • VBA UsedRange是一个矩形范围。
  • VBA UsedRange包含具有任何数据或正在被格式化等的单元格。
  • Excel VBA UsedRange不一定包含工作表的左上角单元格。
  • UsedRange不一定将活动单元视为已使用。
  • UsedRange可用于在VBA中查找最后使用的行并重置使用的范围等。
  • 按键盘上的快捷键Excel键CTRL + SHIFT + ENTER可将选择范围从活动单元格扩展到工作表上最后使用的单元格。