登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

零售创新,创新那些事儿,SPSS,VBA

零售创新

 
 
 

日志

 
 
关于我

新浪微博,零售创新 研究经理,数据分析师 希望和市场研究和零售业的同事共同进步! 本博客发表的都是免费或试用的资料,如果有版权问题请发邮件wangli12a@163.com联系删除。 spss excel vba blog

vba工作表事件  

2012-03-20 11:16:09|  分类: VB和VBA知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

vba工作表事件(1)

 

工作表上的事件在默认情况下是可用的。若要查看工作表的事件过程,请用鼠标右键单击工作表标签,再单击快捷菜单上的查看代码。在过程下拉列表框内选择事件名称。

事件

说明

Activate

激活工作表时

Deactivate

工作表从活动状态转为非活动状态时

BeforeDoubleClick

双击工作表前

BeforeRightClick

右键单击工作表时

Calculate

对工作表进行重新计算之后

Change

更改工作表中的单元格,或外部链接引起单元格时

FollowHyperlink

单击工作表上的任意超链接时

PivotTableUpdate

在工作簿中的数据透视表更新之后

SelectionChange

工作表上的选定区域发生改变时

工作表级事件发生在工作表被激活、用户更改工作表上的单元格或数据透视表更改时。下例在工作表重新计算时就调整 A 列到 F 列的大小。

Private Sub Worksheet_Calculate()

    Columns("A:F").AutoFit

End Sub       

有些事件可用于将某操作取代默认的应用程序操作,或对默认操作进行一些小改动。下例捕获了右键单击事件,并在单元格区域 B1:B10 的快捷菜单中添加了新的菜单项。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _

        Cancel As Boolean)

    For Each icbc In Application.CommandBars("cell").Controls

        If icbc.Tag = "brccm" Then icbc.Delete

    Next icbc

    If Not Application.Intersect(Target, Range("b1:b10")) _

            Is Nothing Then

        With Application.CommandBars("cell").Controls _

            .Add(Type:=msoControlButton, before:=6, _

                temporary:=True)

           .Caption = "New Context Menu Item"

           .OnAction = "MyMacro"

           .Tag = "brccm"

        End With

    End If

End Sub

Activate 事件

激活一个工作簿、工作表、图表或嵌入图表时产生此事件。

Private Sub object_Activate()

object ChartWorkbook、或者 Worksheet。有关对 Chart 对象使用事件的详细信息,请参阅 图表对象事件的用法

说明

切换两个显示同一个工作簿的窗口时,将产生 WindowActivate 事件,但不产生工作簿的 Activate 事件。

新建窗口时不产生本事件。

示例

当激活工作表时,本示例对 A1:A10 区域进行排序。

Private Sub Worksheet_Activate()

    Range("a1:a10").Sort Key1:=Range("a1"), Order:=xlAscending

End Sub

       

Deactivate 事件

图表、工作表或工作簿从活动状态转为非活动状态时产生此事件。

Private Sub object_Deactivate()

object ChartWorkbook 或者 Worksheet。有关对 Chart 对象使用事件的详细信息,请参阅 Chart 对象事件的用法

示例

本示例当工作簿转为非活动状态时,对所有打开的窗口进行排列。

Private Sub Workbook_Deactivate()

    Application.Windows.Arrange xlArrangeStyleTiled

End Sub

       

BeforeDoubleClick 事件

当双击某工作表时产生此事件,此事件先于默认的双击操作。

Private Sub expression_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

expression 引用在类模块中带有事件声明的 Worksheet 类型对象的变量。

Target 必需。双击发生时最靠近鼠标指针的单元格。

Cancel 可选。当事件发生时为 False。如果事件过程将该参数设为 True,则该过程执行完之后将不进行默认的双击操作。

说明

使用 DoubleClick 方法并不触发本事件。

用户双击单元格的边框时不触发本事件。

BeforeRightClick 事件

当用鼠标右键单击某工作表时产生此事件,此事件先于默认的右键单击操作。

Private Sub expression_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

expression 引用在类模块中带有事件声明的 Worksheet 类型对象的变量。

Target 必需。右键单击发生时最靠近鼠标指针的单元格。

Cancel 可选。当事件发生时为 False。如果该事件过程将本参数设为 True,则该过程执行结束之后不进行默认的右键单击操作。

说明

与其他工作表事件相似,当指针位置在图形或命令栏(工具栏或者菜单栏)上时,右键单击不触发本事件。

示例

应用于 Worksheet 对象。

本示例为 B1:B10 单元格添加新的快捷菜单项。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _

        Cancel As Boolean)

    Dim icbc As Object

    For Each icbc In Application.CommandBars("cell").Controls

        If icbc.Tag = "brccm" Then icbc.Delete

    Next icbc

    If Not Application.Intersect(Target, Range("b1:b10")) _

        Is Nothing Then

            With Application.CommandBars("cell").Controls _

                .Add(Type:=msoControlButton, before:=6, _

                temporary:=True)

           .Caption = "New Context Menu Item"

           .OnAction = "MyMacro"

           .Tag = "brccm"

        End With

    End If

End Sub

 

 

 

Calculate 事件

对于 Chart 对象,在图表对新的数据点或者更改的数据点绘制之后产生此事件。对于 Worksheet 对象,在对工作表进行重新计算之后产生此事件。

Private Sub object_Calculate()

object Chart 或者 Worksheet。有关对 Chart 对象使用事件的详细内容,请参阅 Chart 对象事件的用法

示例

每当工作表重新计算时,本示例就调整 A 列到 F 列的宽度。

Private Sub Worksheet_Calculate()
    Columns("A:F").AutoFit
End Sub
               

Change 事件

当用户更改工作表中的单元格,或外部链接引起单元格的更改时产生此事件。

Private Sub Worksheet_Change(ByVal Target As Range)

Target 更改的区域。可以是多个单元格。

说明

重新计算引起的单元格更改不触发本事件。可使用 Calculate 事件俘获工作表重新计算操作。

示例

本示例将更改的单元格的颜色设为蓝色。

Private Sub Worksheet_Change(ByVal Target as Range)
    Target.Font.ColorIndex = 5
End Sub

FollowHyperlink 事件

当单击工作表上的任意超链接时,发生此事件。对于应用程序级或工作簿级的事件,请参阅 SheetFollowHyperlink 事件。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Target Hyperlink 类型,必需。一个代表超链接目标位置的 Hyperlink 对象。

示例

本示例对在当前活动工作簿中访问过的所有链接保留一个列表或历史记录。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    With UserForm1
        .ListBox1.AddItem Target.Address
        .Show
    End With
End Sub
        

PivotTableUpdate 事件

发生在工作簿中的数据透视表更新之后。

Private Sub expression_PivotTableUpdate(ByVal Target As PivotTable)

expression 引用在类模块中带有事件声明的 Worksheet 类型对象的变量。

Target 必需。选定的数据透视表。

示例

本示例显示一则消息,说明数据透视表已经更新。本示例假定您已在类模块中声明了带有事件的 Worksheet 类型的对象。

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
 
    MsgBox "The PivotTable connection has been updated."
 
End Sub

SelectionChange 事件

当工作表上的选定区域发生改变时,将产生本事件。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Target 新选定的区域。

示例

本示例滚动工作簿窗口,直至选定区域位于窗口的左上角。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With ActiveWindow
        .ScrollRow = Target.Row
        .ScrollColumn = Target.Column
    End With
End Sub
               

 

  评论这张
 
阅读(2861)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018