龙空技术网

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

VBA语言専攻 1263

前言:

当前兄弟们对“vbs判断字符串是否为空”大概比较着重,咱们都需要分析一些“vbs判断字符串是否为空”的相关内容。那么小编也在网络上汇集了一些有关“vbs判断字符串是否为空””的相关资讯,希望大家能喜欢,小伙伴们快快来了解一下吧!

大家好,我们今日继续讲解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函数仅仅判断工作表单元格区域内容是否为空,如果工作表中存在其它对象(如图形对象、数据有效性、单元格批注等),不作为判断的基准。

代码实测:

代码截图:

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

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

今日内容回向:

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

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

标签: #vbs判断字符串是否为空