vba删除工作表空白行(如何利用VBA删除工作表中的空白行)

【分享成果,随喜正能量】一个人只要能守住自己的心,那么心就可以安定下来了,只要抑制收敛住自己的脾气,那么脾气也会变得平和。如果别人因为我们的宽容,因为我们的爱心,而变得快乐幸福,这也是上天赐予我们的福气。善良也许会受到伤害,真心也许会被辜负,只要自己内心没有愧疚,活得坦然,福气或许会晚来,但决不会缺席。

《VBA代码解决方案》这套教程是我最早推出的教程,目前已经是第二版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一下把自己喜欢的代码摆好。

这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过度教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是第23讲:如何利用VBA删除工作表中的空白行

vba删除工作表空白行(如何利用VBA删除工作表中的空白行)(1)

第二十三讲 EXCEL中,如何删除工作表中的空白行

今日讲解VBA代码解决方案之二十三,EXCEL中,如何删除工作表中的空白行,这里要首先讲解的是Range对象的Delete方法,此方法用于删除对象。

语法:expression.Delete(Shift)

参数

a) expression是必需的,返回一个Range对象。

b) Shift是可选的,指定删除单元格时替补单元格的移位方式。可为以下 XlDeleteShiftDirection常量之一:xlShiftToLeft或xlShiftUp。如果省略该参数,则Microsoft Excel将根据区域的图形决定移位方式。

1 利用Range对象的Delete方法删除空白行的代码

下面我们将就实际的应用来讲解如何应用DELETE方法,这个方法也是VBA中应用中的非常广泛的。可以用于VALUE的删除,也可以用于格式的删除,还可以用于行的删除等等,今日讲解的就是行的删除。要根据具体的条件来选择删除的对象,这就要根据实际问题的来做具体的判断,这里我要讲解的是“如何删除空白行”,这个问题。这个问题也是在实际工作中应用的最为广泛的方法。下面我们看代码:

Sub mynz_23() '第23讲 EXCEL中,如何删除工作表中的空白行

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

代码窗口:

vba删除工作表空白行(如何利用VBA删除工作表中的空白行)(2)

2 实例代码的解读及运行结果

代码解析:mynz_23过程删除工作表中已使用的区域的所有空行。

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,所以会出现漏删除的现象。

运行mynz_23过程工作表区域所示:

vba删除工作表空白行(如何利用VBA删除工作表中的空白行)(3)

运行后的结果:

vba删除工作表空白行(如何利用VBA删除工作表中的空白行)(4)

今日内容回向:

1 删除工作表行数的思路是什么?

2 UsedRange.Row 意义是什么?

3 Application.WorksheetFunction.CountA(Rows(i)) 是什么意义?

本讲内容参考程序文件:VBA代码解决方案修订(1-48).xlsm

本讲内容参考程序文件:VBA代码解决方案修订(1-48).xlsm

vba删除工作表空白行(如何利用VBA删除工作表中的空白行)(5)

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

vba删除工作表空白行(如何利用VBA删除工作表中的空白行)(6)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页