Excel VBA系列之for each循环批量删工作表

1. 如图所示,要删除Excel文件中的多张工作表,但是其中有一张不能删。

2. 打开Visual Basic,添加模块和过程,称之为“批量删表”。

Sub 批量删表()

End Sub

3. 添加for each循环的代码。

Sub 批量删表()

Dim sht As Worksheet

For Each sht In Sheets

Next

End Sub

1)Dim sht As Worksheet:变量为sht,意思是“工作表”,所以定义为Worksheet;

2)For Each sht In Sheets:每个sht(工作表)在所有工作表中Sheets;

3)Next:结束for each循环。

4. 添加if判断语句,当遇到工作表名为“模板(不删)”时,不删跳过,而删除其余表。

Sub 批量删表()

Dim sht As Worksheet

For Each sht In Sheets

    If sht.Name <> "模板(不删)" Then

        sht.Delete

    End If

Next

End Sub

1)If sht.Name <> "模板(不删)" Then:表名不等于(符号为“<>”)“模板(不删)”;

2)sht.Delete:删除表;

3)End If:结束if语句。

5. 在执行以上代码后,发现删表时会有一个确认对话框。

6. 为了在批量操作时,不用每次都去点击确认,在代码中加入控制警告弹窗的代码。

Sub 批量删表()

Dim sht As Worksheet

Application.DisplayAlerts = False

For Each sht In Sheets

    If sht.Name <> "模板(不删)" Then

        sht.Delete

    End If

Next

Application.DisplayAlerts = True

End Sub

7. 再次执行更新的代码后,可以快速删表,并且只留下我们不要删除的那张工作表。

参考视频:Excel VBA用for each循环批量删工作表 - 知乎

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容