标签: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列最后一个数据之后的空行。如果要返回所有列中最后一个出现数据的行后的空行,那就必须知道哪一列中最后一个数据比其它列出现的行大,但对于许多工作表来说,事先是不知道的。因此,本文前面给出的自定义函数最为灵活。