文章目录
一、工作表对象
工作表指的是 Excel 文件中的 Sheet 页,vba 提供了专门操作 Sheet 页的对象 Worksheet,既工作表对象,通过该对象,我们可以获取到 Sheet 页的信息,以及可以对 Sheet 页进行处理,如:新建、保存、删除、复制等
1.1 获取 Sheet 页对应的工作簿对象
1. 通过 Sheet 页在 Excel 中的顺序,获取工作表对象
Public Sub main()
Dim ws As Worksheet
Set ws = Sheets(1)
Debug.Print ws.Name
End Sub
2. 通过 Sheet 页名称获取工作表对象
(1) 方式一:利用 Sheet 页在工作簿中显示的名称来获取工作表对象,核心语法:Sheets(工作表中显示的名字)
Public Sub main()
Dim ws As Worksheet
Set ws = Sheets("Sheet1")
Debug.Print ws.Name
End Sub
(2) 方式二:利用 Sheet 页的真实名称来获取工作表对象,核心语法:真实的工作表名称
Public Sub main()
Dim ws As Worksheet
Set ws = Sheet1
Debug.Print ws.Name
End Sub
3. 获取正处于激活状态的 Sheet 页的工作表对象
获取正处于激活状态的 Sheet 页的工作表对象,核心语法: ActiveSheet
,激活状态可以简单理解为,目前正处于显示状态的那个 Sheet 页即为激活状态
Public Sub main()
Dim ws As Worksheet
Set ws = ActiveSheet
Debug.Print ws.Name
End Sub
二、工作表对象操作 Sheet 页的常见用法
2.1. 判断工作表是否存在
此处判断的是 Sheet 页在工作簿中显示的名称
Public Sub main()
Dim index As Integer
For index = 1 To Sheets.Count
If Sheets(index).Name = "Sheet1" Then
Debug.Print "存在"
Exit For
End If
Next index
End Sub
2.2. 新建工作表
代码中第 4 行的 Name
,设置的是 Sheet 页在工作簿中显示的名称,
新创建的 Sheet 页默认显示在最前面,顺序是 1
Public Sub main()
Dim ws As Worksheet
Set ws = Sheets.Add
ws.Name = "模板"
End Sub
2.3. 隐藏和取消隐藏工作表
Visible
属性为 True
时显示 Sheet 页,为 False
时隐藏 Sheet 页
Public Sub main()
Dim ws As Worksheet
Set ws = Worksheets(1)
ws.Visible = True
End Sub
2.4. 移动工作表
移动到目标工作表之前:
Public Sub main()
'要移动的工作表
Dim sourceWs As Worksheet
Set sourceWs = Worksheets(1)
'移动基准的工作表
Dim targetWs As Worksheet
Set targetWs = Worksheets(3)
'移动到基准工作表之前
sourceWs.Move before:=targetWs
End Sub
移动到目标工作表之后:
Public Sub main()
'要移动的工作表
Dim sourceWs As Worksheet
Set sourceWs = Worksheets(1)
'移动基准的工作表
Dim targetWs As Worksheet
Set targetWs = Worksheets(3)
'移动到基准工作表之后
sourceWs.Move after:=targetWs
End Sub
2.5. 复制工作表
复制到目标工作表之前:
Public Sub main()
'要复制的工作表
Dim sourceWs As Worksheet
Set sourceWs = Worksheets(1)
'复制基准的工作表
Dim targetWs As Worksheet
Set targetWs = Worksheets(3)
'复制到基准工作表之前
sourceWs.Copy before:=targetWs
End Sub
复制到目标工作表之后:
Public Sub main()
'要复制的工作表
Dim sourceWs As Worksheet
Set sourceWs = Worksheets(1)
'复制基准的工作表
Dim targetWs As Worksheet
Set targetWs = Worksheets(3)
'复制到基准工作表之后
sourceWs.Copy after:=targetWs
End Sub
2.6. 工作表保护
1. 利用 Protect
函数给 Sheet 页设置密码保护:
Public Sub main()
Dim ws As Worksheet
Set ws = Sheet1
ws.Protect "123456"
End Sub
2. 利用 Unprotect
函数给 Sheet 页解除密码保护:
Public Sub main()
Dim ws As Worksheet
Set ws = Sheet1
ws.Unprotect "123456"
End Sub
2.7. 判断工作表是否被保护
Public Sub main()
Dim ws As Worksheet
Set ws = Sheet1
If ws.ProtectContents = True Then
Debug.Print "当前Sheet页被保护了!"
End If
End Sub
2.8. 删除工作表
Public Sub main()
Dim ws As Worksheet
Set ws = Sheet1
'删除前取消提示框
Application.DisplayAlerts = False
'删除工作表
ws.Delete
'删除后恢复提示框
Application.DisplayAlerts = True
End Sub
2.9. 选中工作表
Public Sub main()
Dim ws As Worksheet
Set ws = Sheet1
ws.Select
End Sub