中判断字符串是否为空_自己动手编写VBA代码,判断一个工作表是否为空,然后删除它...

大家好,我们今日继续讲解VBA代码解决方案的第57讲内容:判断工作表是否为空表。在实际的工作中,我们要常常判断某个工作表是否为空的,那么在VBA中是如何能做到这一点呢?

VBA中没有专门的属性或函数可以判断工作表是否为空白工作表,可以使用自定义函数返回指定工作表是否为空工作表

知识点一:利用工作表函数CountA统计工作表已使用区域的非空单元格个数:COUNTA函数功能是返回参数列表中非空的单元格个数。利用函数 COUNTA 可以计算单元格区域或数组中包含数据的单元格个数。

知识点二:我们可以自定义一个函数,利用CountA统计工作表已使用区域的非空单元格个数,如果这个数值为0,那么这个工作表就是空的。

首先看看我们的自定义函数,如下面的代码所示。

Function MyIsBlankSht(Sh As Variant) As Boolean

If TypeName(Sh) = "String" Then Set Sh = Worksheets(Sh)

If Application.CountA(Sh.UsedRange.Cells) = 0 Then

MyIsBlankSht = True

End If

End Function

代码解析:

自定义MyIsBlankSht函数包含一个Variant变量类型的参数,代表工作表名称或者对象名称。如果指定的工作表为空工作表,则该函数返回True。

第2行代码使用TypeName函数判断参数Sh是否为字符串类型("String"),如果是字符串,则将以该字符串作为名称的工作表赋值给变量Sh。

第3行代码通过工作表函数CountA统计工作表已使用区域的非空单元格个数,如果统计结果为0,则表示该工作表为空工作表。

我们看看上述自定义函数在实际中的利用:有了上述的自定义函数,现在就可以像使用VBA函数一样使用自定义的MyIsBlankSht函数,如下面的代码我们要首先判断一下某个工作表是否为空,如果为空,那么删除它。

Sub MyDelBlankSht()

Dim Sh As Worksheet

Application.DisplayAlerts = False

i = 1

For Each Sh In ThisWorkbook.Sheets

If MyIsBlankSht(Sh) Then Sh.Delete: MsgBox "删除" & i & "个工作了": i = i + 1

Next

Application.DisplayAlerts = True

MsgBox "共删除" & i - 1 & "个工作!"

End Sub代码解析:

使用自定义的MyIsBlankSht函数删除工作簿中所有空工作表。

第3行代码将Application对象的DisplayAlerts属性设置为False,使删除时不显示系统警告对话框。

第5行到第7行代码,使用For Each...Next语句遍历所有工作表,使用自定义的MyIsBlankSht函数判断是否为空表,如果为空表则使用Delete方法删除。

注意 自定义MyIsBlankSht函数仅仅判断工作表单元格区域内容是否为空,如果工作表中存在其它对象(如图形对象、数据有效性、单元格批注等),不作为判断的基准。

代码实测:

代码截图:

b91fef935b28f69d156a3b50db69640a.png

运行截图:每删除一个工作表会告诉我们删除的个数。

ff64a6781332be4b0d16667c54b6857d.png

最后会告诉我们共删除了几个工作表:

e2308dc541b13293bbe9ef326aa2742d.png

今日内容回向:

1 如何判断工作表为空呢?

2 如何删除空白的工作表呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值