今天依然是无图代码纯享版!今天我们主要分享是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 Sub2. 删除工作表
下面是删除工作表的核心代码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 Sub3. 工作表转Excel文件
如果把一个Sheet工作表另存为一个独立的Excel文件呢?用下面的代码!Data是我们要处理的工作表名称,请自行修改!
Sub 工作表转Excel文件()
'复制后会自动创建新工作簿 - Data 是工作表名称!
Sheets("Data").Copy
'也可以加入保存路径
ActiveWorkbook.SaveAs "Data备份.xlsx"
End Sub4. 工作表重命名
执行下面的代码,回出现一个弹窗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 Sub5. 隐藏/显示工作表
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 Sub6. 保护/取消保护工作表
ProtectContents属性判断工作表是否保护,如果保护了取消保护,否则保护工作表,其中的123是密码,按照需要进行修改!如果你有基础,也可以通过InputBox弹窗让用户自己输入新的密码!
Sub 保护工作表()
With Sheets("Data") '替换为目标工作表名
If .ProtectContents Then
.Unprotect Password:="123"
MsgBox "已取消保护"
Else
.Protect Password:="123"
MsgBox "已启用保护"
End If
End With
End Sub7. 遍历所有工作表
如果你想逐个工作表进行处理,那么可以套用下面的代码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 Sub8. 移动工作表位置
Move方法可以移动工作表,我们可以通过Before/After来控制移动到之前或者之后
Sub 移动工作表()
'移动到最前
Sheets("Sheet1").Move Before:=Sheets(1)
'移动到最后
'Sheets("Sheet1").Move After:=Sheets(Sheets.Count)
End Sub9. 检查工作表是否存在
下面是判断工作表是否存在的方法!利用的是容错法,你也可以遍历逐个工作表检查也是一种常用的方法,只是工作表较多的情况下,效率一般!
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 Function10. 清除工作表内容
ClearContents用于清楚指定工作表单元格区域中的内容,如果你修改为Clear就是全部清除,包括内容及格式!
Sub 删除内容()
Dim ws As Worksheet
Set ws = Sheets("测试表") '替换为目标工作表名
'清除内容但保留格式
ws.Cells.ClearContents
'如需彻底清除(含格式):
'ws.Cells.Clear
End Sub使用说明:
1. 按 Alt+F11打开 VBA 编辑器2. 插入新模块( 插入-模块)3. 粘贴所需代码,按需修改! 4. 按 F5运行或绑定图片/按钮等方法
重要提示
VBA代码执行不可逆,请执行请务必做好文件的备份
