========================= ① =========================
Sub mynz_23() '如何删除工作表中的空白行
Dim rRow As Long
Dim LRow As Long
Dim i As Long
rRow = Sheets("23").UsedRange.Row
LRow = rRow + Sheets("23").UsedRange.Rows.Count - 1
For i = LRow To rRow Step -1
If Application.WorksheetFunction.CountA(Rows(i)) = 0 Then
Rows(i).Delete
End If
Next
End Sub
=========================②========================
代码解读:
1) 第5行代码获得工作表中已使用区域的首行行号,其中使用UsedRange属性返回工作表中已使用的区域。
2) 第6行代码获得工作表中已使用区域的最后一行行号。
3) 第7行到第11行代码从最大行数至最小行数循环判断指定行是否为空行,若为空行则删除该行。
4) 其中第8、9行代码使用工作表CountA函数判断当前行已使用单元格的数量,如果为零说明此行是空行则使用Delete删除。
5) UsedRange属性应用于Worksheet对象,返回指定工作表中已使用区域的Range对象,即返回工作表中已使用的单元格区域。
6) WorksheetFunction.CountA 方法 用于计算非空单元格及参数列表中值的个数。
7) Application.WorksheetFunction.CountA(Rows(i)) 表示选中Rows(i)行的非空单元格的个数。
UsedRange.Row表示已用单元格第一行的序数; UsedRange.Rows.Count表示已用单元格总的行数;
需要注意点是:此处一定要从最大行数至最小行数开始循环判断,因为如果工作表中存在两行及两行以上的相邻空行,从最小行数开始循环删除的话,当第一行空行被删除后,被删除行下面的一行会往上移位,而此时For...Next循环的计数器已经加1,所以会出现漏删除的现象。
各套教程的介绍:
第1套(初级):VBA代码解决方案
第2套(中级+):VBA数据库解决方案
第3套(中级-):VBA数组与字典解决方案
第4套(初级):VBA代码解决方案之视频
第5套(高级):VBA中类的解读和利用
第6套(高级):VBA信息获取与处理
上述教程的学习顺序:1→3→2→6→5或者4→3→2→6→5。其中第四套是对第一套的视频讲解,所以第一套和第四套只选其一即可。如以提高自己能力为目的可以WeChat: VBA6337或者NZ9668
分享成果,随喜正能量