ExcelVBA解读(93):工作簿对象的SheetActivate、SheetDeact。。。

更新时间:2023-05-31 03:30:23 阅读: 评论:0

ExcelVBA解读(93):⼯作簿对象的SheetActivate、SheetDeact。。。本⽂详细讲解Workbook对象的3个事件:SheetActivate事件、SheetDeactivate事件和
SheetSelectionChange事件。
Workbook_SheetActivate事件
当激活任意⼯作表时发⽣Workbook_SheetActivate事件。其语法为:
Workbook_SheetActivate(ByVal Sh As Object)
说明:
参数Sh,必需,表⽰被激活的⼯作表,可以是图表⼯作表或标准⼯作表。
在ThisWorkbook代码模块中输⼊下⾯的代码,当激活⼯作表时弹出⼀个显⽰该⼯作表名字的消
息框:
Private SubWorkbook_SheetActivate(ByVal Sh As Object)
MsgBox '当前⼯作表是:' & Sh.Name
End Sub
Workbook_SheetDeactivate事件
当使⼯作表变为⾮活动⼯作表时发⽣Workbook_SheetDeactivate事件。其语法为:
Workbook_SheetDeactivate(ByVal Sh As Object)
说明:
参数Sh,必需,表⽰变为⾮活动⼯作表的⼯作表,可以是图表⼯作表或标准⼯作表。
在ThisWorkbook代码模块中输⼊下⾯的代码,当使⼯作表变为⾮活动⼯作表时弹出⼀个显⽰该
⼯作表名字的消息框:
Private SubWorkbook_SheetDeactivate(ByVal Sh As Object)
MsgBox '⾛了,⼯作表:' & Sh.Name
End Sub
当SheetActivate事件和SheetDeactivate事件都存在时,先发⽣SheetDeactivate事件,再发⽣
SheetActivate事件。
Workbook_SheetSelectionChange事件
当改变任意⼯作表(图表⼯作表除外)的单元格选择时发⽣Workbook_SheetSelectionChange
事件。其语法为:
Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal TargetAs Range)
说明:
参数Sh,必需,包含新的单元格选区的⼯作表。
后帝参数Target,必需,新选择的单元格区域。
在ThisWorkbook代码模块中输⼊下⾯的代码,将在⼯作簿状态栏中显⽰当前⼯作表名称和所选区域的地址:
Private Sub Workbook_SheetSelectionChange(ByValSh As Object, ByVal Target As Range)  Application.StatusBar = Sh.Name & ':' & Target.Address
联系近义词End Sub
秦梦遥
⽰例1:只允许访问指定的⼯作表
下⾯的代码总是使⼯作簿中的第1个⼯作表为当前⼯作表,限制对其他⼯作表的访问。
Private SubWorkbook_SheetActivate(ByVal Sh As Object)
'将1修改为允许访问的⼯作表索引号或名称
Worksheets(1).Activate
End Sub
⽰例2:限制⽤户必须包含指定内容
下⾯的代码确定⼯作表Sheet1的单元格A1的内容为“完美Excel”,否则不能访问其他⼯作表。
Private SubWorkbook_SheetDeactivate(ByVal Sh As Object)
If Sheet1.Range('A1') <> '完美Excel' Then
MsgBox 'Sheet1⼯作表的单元格A1的内容必须是''完美Excel'''
Sheet1.Activate舞蹈造型
End If
End Sub
⽰例3:限制⽤户必须在指定区域中操作
下⾯的代码限制⽤户必须在⼯作表Sheet1的单元格区域“A1:D3”中进⾏操作:
Private SubWorkbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)  Dim rng As Range
Set rng = Sheet1.Range('A1:D3')
If Sh.Name = 'Sheet1' Then
什么牌子的洗衣机好If Interct(Target, rng) Is NothingThen
If lng_DeactivedSheetIndex <>ThisWorkbook.ActiveSheet.Index Then
IfThisWorkbook.Sheets(lng_DeactivedSheetIndex).Name
<>mstr_ActiveSheetPreviousName Then
ThisWorkbook.Sheets(lng_DeactivedSheetIndex).Name
=mstr_ActiveSheetPreviousName
mstr_ActiveSheetPreviousName =mstr_ActiveSheetName
NameChanged
End If
End If
Ca 1
mstr_ActiveSheetPreviousName =ThisWorkbook.ActiveSheet.Name
mstr_ActiveSheetName = ThisWorkbook.ActiveSheet.Name
Ca 2
mstr_ActiveSheetName =ThisWorkbook.ActiveSheet.Name
If mstr_ActiveSheetName <>mstr_ActiveSheetPreviousName Then
经理的英语
ThisWorkbook.ActiveSheet.Name =mstr_ActiveSheetPreviousName
NameChanged
End If
End Select
End Sub
Sub NameChanged()
MsgBox '您不能修改⼯作表名称!'
ti7决赛
母子游戏End Sub
此时,当⽤户修改任意⼯作表名称时,⼯作表名称会恢复原名,并弹出“您不能修改⼯作表名称”的提⽰。

本文发布于:2023-05-31 03:30:23,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/817677.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:作表   事件   名称   必需   代码
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图