大家好,我接着给大家去介绍VBA的一些小功能,希望对大家在平时的工作中能有所帮助。
我文章中的代码都是经过调试过的,复制过去是可以直接运行的,欢迎大家复制使用。
在我们实际工作中,经常要面临处理各种数据表格,里面有一个小功能就是,我如何能获取到指定Sheet中的有数据单元格的最后一行的行号是多少。

现在我把获取行号的几种方法共享给大家,每个方法都有其缺点,大家在实际工作中,可以有选择地去使用。
方法1:通过VBA的For循环获取到最后行号

Function getEndRowNumberByForLoop()
Dim num, i
Dim srcWorkSheet As Worksheet
Dim strVal As String
Set srcWorkSheet = ThisWorkbook.ActiveSheet
num = srcWorkSheet.Rows.Count
For i = 1 To num
strVal = srcWorkSheet.Range("A" & i).Value
If strVal = "" Then
Exit For
End If
Next i
MsgBox "A列的最大行号是:" & (i - 1)
End Function
不足点:
仅适用于数据量小的情况,数据量大了之后,循环起来很慢。
2、使用.UseRange方式获取最大行号
请大家注意看,我最后一行只是填充了背景色,并没有输入任何值,这个方法会认为这个单元格是非空单元格。所以获取到的最大行号是19。

Function getEndRowNumberByUseRange()
Dim num
Dim srcWorkSheet As Worksheet
Set srcWorkSheet = ThisWorkbook.ActiveSheet
num = srcWorkSheet.UsedRange.Rows.Count
MsgBox "A列的最大行号是:" & num
End Function
3、使用Range().End(xlDown)方法获取最后行号
当我们某一列的数据都是连续数据,也就是说中间没有出现空白数据的时候,通过这个方法是可以获取到最大行号的。

但是,如果某一列的数据不是连续数据,这个方法就无法正常获取到正确的最大行号。如下图所示:

Function getEndRowNumberByRangeEndxlDown()
Dim num_down
Dim srcWorkSheet As Worksheet
Set srcWorkSheet = ThisWorkbook.ActiveSheet
num_down = srcWorkSheet.Range("A1").End(xlDown).Row
MsgBox "A列最大行号(xlDown):" & num_down
End Function
4、使用Range().End(xlUp)方法获取最后行号
如果我们某一列的数据中间出现空白行,可以用下面的方法获取到正确的最大行号。

Function getEndRowNumberByRangeEndxlUp()
Dim num_up
Dim srcWorkSheet As Worksheet
Set srcWorkSheet = ThisWorkbook.ActiveSheet
num_up = srcWorkSheet.Range("A" & srcWorkSheet.Rows.Count).End(xlUp).Row
MsgBox "A列最大行号(xlUp):" & num_up
End Function
本文分享了四种在VBA中获取Excel指定Sheet有数据单元格最后一行行号的方法,包括For循环、.UseRange、Range().End(xlDown)和Range().End(xlUp),并分析了各自的适用场景和不足之处。这些经过调试的代码片段适用于不同的数据情况,有助于提升数据处理效率。
6601

被折叠的 条评论
为什么被折叠?



