excel激活工作表vba (excelvba激活工作表)

WorkSheet对象表示工作表,通过Workbook对象的Sheets属性或WorkSheets集合属性可以返回工作簿中的指定工作表。

导读

Worksheet对象介绍

  • Worksheets集合
  • Worksheet对象常用属性
  • Worksheet对象常用方法
  • Worksheet对象常用事件

运用Worksheet对象管理工作表

  • 删除工作表
  • 获取工作表数量
  • 激活指定工作表
  • 选取工作表
  • 保护工作表
  • 判断工作表是否存在
  • 工作表其它常用操作

响应用户操作

  • 响应选择区域发生变化激发SelectionChange事件
  • 选择指定工作表触发Activate事件
  • 工作表中单元格内容变化后触发Change事件
  • 离开工作表时触发Deactivate事件

1、Worksheet对象介绍

通过Worksheets集合对象可向工作簿中增加、删除工作表,获取对工作表的引用,向工作簿增加、删除行和列。通过Worksheet对象的事件还可以控制工作表的行为,如更名、打印等。

I、Worksheets集合

EXCEL VBA还提供了另一个Sheets集合,该集合中的每个成员也都是Worksheet对象或Chart对象,其属性和方法都相同。

Worksheets集合除了一般集合对象所具有的属性外,还有一个Visible属性,通过该属性可控制集合中的Worksheet对象是否可见。通过Worksheets集合方法控制工作表有以下几种方法:

方法

备注

Add

新建工作表或图表

Copy

将工作表复制的工作簿的其它位置

Delete

删除工作簿中的指定工作表

Move

将工作表移动到工作簿的其它位置

PrintOut

定义输出指定工作表

PrintPreview

预览打印效果

II、Worksheet对象常用属性

通过Worksheet对象的属性可以引用工作表的单元格、控制工作表是否可见等。Worksheet对象常用属性如下:

属性

备注

Cells

返回一个Range对象,代表工作表中所有单元格

Comments

返回Comments集合,表示指定工作表中的所有注释

Name

设置或返回工作表名称

Next

返回当前工作表的下一个工作表的Worksheet对象

Previous

返回当前工作表的上一个工作表的Worksheet对象

Range

返回一个Range对象,代表一个单元格或单元格区域

ScrollArea

以A1引用样式的形式设置或返回允许滚动的区域

UsedRange

返回一个Range对象,表示工作表中所使用的单元格区域

Visible

设置工作表对象是否可见

III、Worksheet对象常用方法

运用Worksheet对象提供的方法,可复制、移动、删除工作表,还可以对工作表进行保护等操作。下面是一些常用的方法:

方法

备注

Active

激活当前工作表

Copy

将工作表复制的工作簿的其它位置

Delete

删除工作表对象

Move

将工作表移动到工作簿的其它位置

Paste

将粘贴板中内容复制到工作表

Protect

保护工作表不被修改

Unprotect

取消工作表保护

IV、Worksheet对象常用事件

通过Worksheet对象的事件可以捕获用户中工作表中的操作,以便控制工作表中的数据。常用Worksheet对象事件主要有以下几种:

事件

备注

Activate

激活工作表时发生次事件

BeforeDoubleClick

双击工作表时发生该事件

BeforeRightClick

鼠标右键工作表时激发该事件

Calculate

工作表重新计算后发生此事件

Change

工作表任何单元格内容变化后发生此事件

Deactivate

关闭工作表发生此事件

SelectionChange

工作表选定区域变化后发生此事件

2、运用Worksheet对象管理工作表

I、新增工作表

'新增工作表样例代码
ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
Worksheets.Add after:=Worksheets(Worksheets.Count)  '同等效果

注:在当前工作簿中添加工作表

II、删除工作表

'删除工作表样例代码
ActiveWorkbook.Sheets(8).Delete
Worksheets(8).Delete   '同等效果
Worksheets("sheet7").Delete 

注:按索引删除当前工作簿指定表格

III、获取工作表数量

'获取工作表数量样例代码
Dim n As Long
n = Worksheets.Count
MsgBox n

IV、激活指定工作表

'激活指定工作表样例代码
Dim sw As Object
Set sw = Worksheets(1)
sw.Activate   '激活第一个工作表

V、选取工作表

与激活工作表不同,使用Worksheets集合对象的Select方法可以同时选择多个工作表。

'选取工作表样例代码
Worksheets(1).Select  '使用索引引用第1个工作表
Worksheets(3).Select False  '使用索引引用第1个工作表
  '使用索引和Name对象同时引用第1、3个工作表
Worksheets(Array(Worksheets(1).Name, Worksheets(3).Name)).Select
If ActiveSheet.Index <> 1 Then
  ActiveSheet.Previous.Activate   '激活前一个工作表
Else
  MsgBox "已到第一个工作表"
End If
If ActiveSheet.Index <> Worksheets.Count Then
  ActiveSheet.Next.Activate   '激活后一个工作表
Else
  MsgBox "已到最后一个工作表"
End If

IV、保护工作表

'保护工作表样例代码
'判断工作表是否保护
If ActiveSheet.ProtectContents Then
  MsgBox "当前工作表已保护!"
Else
  MsgBox "当前工作表未保护!"
End If
'保护指定工作表
Dim ws As Worksheet
Dim str As String
str = Application.InputBox(prompt:="请输入保护工作表密码:", _
Title:="输入密码", Type:=2)
Set ws = Worksheets(1)
ws.Protect Password:=str   '设置密码
ws.Unprotect Password:=str '取消密码
'-------------------------------------------
'保护指定单元格区域样例代码
Cells.Select
Selection.Locked = False
Range("A1:C10").Select
Selection.Locked = True
ActiveSheet.Protect Password:="12345"

IIV、判断工作表是否存在

'判断工作表是否存在样例代码
Dim sName As String
Dim Err1 As Error
On Error GoTo Err1
sName = Worksheets("sheet10").Name
If Err.Number = 0 Then MsgBox "工作表存在"
Err1:
If Err.Number <> 0 Then MsgBox "工作表不存在"

IIIV、工作表其它常用操作

'工作表其它常用操作样例代码
Dim ws As Worksheet
Set ws = Worksheets(1)
ws.Copy Before:=ws            '复制新工作表的当前工作表前面
ws.Copy After:=ws             '复制新工作表的当前工作表后面
ws.Visible = xlSheetHidden    '隐藏指定工作表
ws.Visible = xlSheetVisible   '显示指定工作表
ws.Move After:=Worksheets(2)  'sheet1移动到sheet1后面
Set ws = Worksheets(2)
ws.Move Before:=Worksheets(1) 'sheet2移动到sheet1前面
'计算打印页数
Dim ws As Worksheet
Dim r As Long, c As Long, p As Long
Set ws = Worksheets(3)
c = ws.HPageBreaks.Count + 1  'HPageBreaks集合代表工作表上的水平分页符
r = ws.VPageBreaks.Count + 1  'VPageBreaks集合代表工作表上的垂直分页符
p = r * c
MsgBox "当前工作表共有" & p & "页。"

3、响应用户操作

在EXCEL应用程序中,要控制和操作工作表中的单元格数据,就需要对工作表事件编写代码程序。工作表事件代码开发是EXCEL应用程序使用最多的场景之一。

在VBE的【工程资源管理器】中双击工作表名称,即可打开【代码】窗口,进而选择事件编写代码。如图:

excel自定义函数vba,excelvba激活工作表

I、响应选择区域发生变化激发SelectionChange事件

当在EXCEL中通过鼠标选择的单元格区域发生变化时,可以对工作表的SelectionChange事件添加编码。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Target.Address         '返回选择单元格区域绝对地址
MsgBox Target.Row             '返回选择单元格区域起始行
MsgBox Target.Column          '返回选择单元格区域起始列
MsgBox Target.Rows.Count      '返回选择单元格区域行数
MsgBox Target.Columns.Count   '返回选择单元格区域列数
'禁止用户选择B1:F3区域
If Target.Row <= 3 And Target.Column >= 2 And Target.Column <= 6 Then [B4].Select
End Sub

II、选择指定工作表触发Activate事件

当在EXCEL中通过鼠标选择某个工作表时激发Worksheet对象的Activate事件,可以对工作表的Activate事件添加编码,如设置允许滚动的区域。

Private Sub Worksheet_Activate()
ActiveSheet.ScrollArea = "A1:N100"
End Sub

III、工作表中单元格内容变化后触发Change事件

当在EXCEL中指定工作表某单元格发生变化后激发Worksheet对象的Change事件,可以对工作表的Change事件添加编码,如设置允许滚动的区域。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
r = Target.Row
c = Target.Column
v = Cells(r, c).Value
MsgBox v                '改变某单元格内容后显示新内容
End Sub

IV、离开工作表时触发Deactivate事件

在离开EXCEL指定工作表时激发Worksheet对象的Deactivate事件,可以对工作表的Deactivate事件添加编码,如限制用户只能在第一个工作表中。

Private Sub Worksheet_Deactivate()
Sheets(1).Activate                   '离开时激活第1个工作表
Sheets(2).Visible = xlSheetHidden    '离开时隐藏第2个工作表
Sheets(2).Visible = xlSheetVisible   '离开时显示第2个工作表
End Sub

在Excel VBA中,Worksheet对象用于表示工作簿中的工作表(也称为电子表格或工作表)并对其进行操作。Worksheet对象是编程中最常用的对象之一,它提供了许多功能来读取、写入和处理工作表数据。