VBA工作表十大实战操作代码,纯享版V2.0!

今天依然是无图代码纯享版!今天我们主要分享是Excel工作表相关的常用操作代码!一共10组,一起来学习一下吧!如果目前还不会VBA,记得收藏备查,"书到用时方恨少,代码用时无处找!"


1. 新建工作表

在当前Excel文件中新增一个工作表,这个工作表添加到所有表的最后,并使用当前的日期作为工作表名称,这里大家可以看代码注释,按需求修改,保姆级的!After对应的有before添加到前面!

                                              Sub 新建工作表()
Dim ws As Worksheet
'添加到工作表的最后
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
'当前日期作为工作表名称-按需修改(E精精提示)
ws.Name = Format(Now, "yyyymmdd")
End Sub

2. 删除工作表

下面是删除工作表的核心代码Delete,其他都是辅助用,DisplayAlerts设置是表名删除时出现的提示,是否删除!配合for循环就可以批量删除工作表啦,记得从后往前删除或者名称列表删除!

                                              Sub 删除工作表()
Dim sheetName As String

'替换为要删除的工作表名
sheetName = "Sheet1"

On Error Resume Next
Application.DisplayAlerts = False
'核心代码,删除工作表-E精精 提示
Sheets(sheetName).Delete
Application.DisplayAlerts = True
On Error GoTo 0
End Sub

3. 工作表转Excel文件

如果把一个Sheet工作表另存为一个独立的Excel文件呢?用下面的代码!Data是我们要处理的工作表名称,请自行修改!

                                              Sub 工作表转Excel文件()
'复制后会自动创建新工作簿 - Data 是工作表名称!
Sheets("Data").Copy
'也可以加入保存路径
ActiveWorkbook.SaveAs "Data备份.xlsx"
End Sub

4. 工作表重命名

执行下面的代码,回出现一个弹窗InputBox,输入新工作表名称,就会把当前激活的工作表名称修改为你输入的名称,代码已经做了容错处理,请放心使用!

                                              Sub 重命名()
Dim newName As String
newName = InputBox("输入新工作表名称", "重命名")
If newName <> "" Then
On Error Resume Next '防止重名冲突
ActiveSheet.Name = newName
If Err.Number <> 0 Then MsgBox "名称无效或已存在!"
On Error GoTo 0
End If
End Sub

5. 隐藏/显示工作表

Backend替换为自己想要处理的工作表名称,Visible属性控制显示和隐藏,我们还可以设置为深度隐藏,也就是右击是看不到深度隐藏的工作表的,使用xlSheetVeryHidden

                                              Sub 显示隐藏工作表()
Dim ws As Worksheet
Set ws = Sheets("Backend") '替换为目标工作表名

If ws.Visible = xlSheetVisible Then
ws.Visible = xlSheetHidden
Else
ws.Visible = xlSheetVisible
End If
End Sub

6. 保护/取消保护工作表

ProtectContents属性判断工作表是否保护,如果保护了取消保护,否则保护工作表,其中的123是密码,按照需要进行修改!如果你有基础,也可以通过InputBox弹窗让用户自己输入新的密码!

                                              Sub 保护工作表()
With Sheets("Data") '替换为目标工作表名
If .ProtectContents Then
.Unprotect Password:="123"
MsgBox "已取消保护"
Else
.Protect Password:="123"
MsgBox "已启用保护"
End If
End With
End Sub

7. 遍历所有工作表

如果你想逐个工作表进行处理,那么可以套用下面的代码for Each ……逐个工作表处理,下面的Debug.Print打印每个工作表的名称和对应的索引,也就是第几个!你也可以实现更加复杂的需求,核心是for循环!

                                              Sub 遍历工作表()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Debug.Print "工作表: " & ws.Name & " | 索引: " & ws.Index
Next ws
End Sub

8. 移动工作表位置

Move方法可以移动工作表,我们可以通过Before/After来控制移动到之前或者之后

                                              Sub 移动工作表()
'移动到最前
Sheets("Sheet1").Move Before:=Sheets(1)
'移动到最后
'Sheets("Sheet1").Move After:=Sheets(Sheets.Count)
End Sub

9. 检查工作表是否存在

下面是判断工作表是否存在的方法!利用的是容错法,你也可以遍历逐个工作表检查也是一种常用的方法,只是工作表较多的情况下,效率一般!

                                              Sub 判断是否存在()
Dim sheetName As String
sheetName = "E精精测试表" '替换为要检查的名称

If SheetExists(sheetName) Then
MsgBox "工作表存在!"
Else
MsgBox "工作表不存在!"
End If
End Sub

'辅助函数
Function SheetExists(sName As String) As Boolean
On Error Resume Next
SheetExists = Not Worksheets(sName) Is Nothing
On Error GoTo 0
End Function

10. 清除工作表内容

ClearContents用于清楚指定工作表单元格区域中的内容,如果你修改为Clear就是全部清除,包括内容及格式!

                                              Sub 删除内容()
Dim ws As Worksheet
Set ws = Sheets("测试表") '替换为目标工作表名

'清除内容但保留格式
ws.Cells.ClearContents

'如需彻底清除(含格式):
'ws.Cells.Clear
End Sub

使用说明:

  1. 1. 按 Alt+F11 打开 VBA 编辑器
  2. 2. 插入新模块( 插入-模块
  3. 3. 粘贴所需代码,按需修改!
  4. 4. 按 F5 运行或绑定图片/按钮等方法

重要提示

VBA代码执行不可逆,请执行请务必做好文件的备份

原文链接:,转发请注明来源!