VBA程序:获取工作表中使用区域后的第一个空行

2023-12-11 16:05:09 浏览数 (1)

标签:VBA

下面的VBA自定义函数可以返回指定工作表中已使用区域之后的第一个空行行号。

代码语言:javascript复制
Function firstUnusedCellRowNumber(sh As Worksheet) As Long
 With sh.UsedRange
   If .Cells(1, 1).Address <>
     .Cells(.Rows.Count, .Columns.Count).Address Then
       firstUnusedCellRowNumber = .Rows.Count   .Row
   Else
     If .Cells(1, 1).Value <> "" Then
       firstUnusedCellRowNumber = .Row   1
     Else
       firstUnusedCellRowNumber = 1
     End If
   End If
 End With
End Function

例如,对于下图1所示的工作表,调用上述函数后,返回数字9,即已使用区域后的第一行是第9行。

图1

由示例可见,即便工作表中已使用区域前面存在空行,该函数仍然返回已使用区域后的第一个空行。

如果使用下面的语句:

代码语言:javascript复制
ActiveSheet.UsedRange.Rows.Count   1

只有当第1行中的单元格有数据时,才会返回正确结果。

有很多人喜欢使用下面的语句:

代码语言:javascript复制
Cells(Rows.Count, 1).End(xlUp).Row   1

返回最后一行之后的空行。然而,这只是返回第1列最后一个数据之后的空行。如果要返回所有列中最后一个出现数据的行后的空行,那就必须知道哪一列中最后一个数据比其它列出现的行大,但对于许多工作表来说,事先是不知道的。因此,本文前面给出的自定义函数最为灵活。

0 人点赞