VBA工作薄工作表事件一览表

合集下载

ExcelVBA解读(80):看看工作表会自动响应哪些操作——认识工作表事件

ExcelVBA解读(80):看看工作表会自动响应哪些操作——认识工作表事件

ExcelVBA解读(80):看看工作表会自动响应哪些操作——认识工作表事件我们可以设置在工作表上进行操作时,工作表要做的事情,例如激活某工作表时弹出一个对话框、在单元格之间移动时高亮显示单元格所在的行列,等等。

这就要用到Worksheet对象的事件。

Worksheet对象的事件并不多,共9个,如图1所示。

图1其中,各个事件发生条件为:•Activate事件发生在工作表成为当前活动工作表时•BeforeDoubleClick事件发生在工作表单元格中双击时发生且在默认的双击操作之前•BeforeRightClick事件发生在工作表单元格中右击时发生且在默认的右击操作之前•Calculate事件发生在重新计算工作表后•Change事件发生在工作表单元格被修改后•Deactivate事件发生在转移到并使其他工作表为活动工作表前•FollowHyperlink事件发生在单击工作表中的超链接时•PivotTableUpdate事件发生在更新工作表中数据透视表后•SelectionChange事件发生在改变工作表单元格选择时下面分别详细介绍这些事件。

Activate事件Worksheet_Activate()在工作表成为活动工作表时触发该事件。

Deactivate事件Worksheet_Deactivate()当转移到其他工作表时触发该事件。

示例1:激活当前工作表与转移到其他工作表时的事件响应以工作表Sheet2为例,当激活使工作表Sheet2成为活动工作表时,以及转移到其他工作表时,分别显示相应的消息框。

Private Sub Worksheet_Activate()MsgBox 'Hi!欢迎来到【完美Excel】.', , 'excelperfect'End SubPrivate Sub Worksheet_Deactivate()MsgBox '谢谢你的来访!', , '完美Excel'End Sub代码效果如图2所示。

利用VBA统计各个工作表的记录数目

利用VBA统计各个工作表的记录数目

统计各个工作‎表记录数目1、代码即说明括号内红色字‎体为代码说明‎。

代码如下:Sub 统计各工作表‎记录的数目()Dim n%n = Sheets‎.Count(n表示当前工‎作簿工作表的‎数量)Worksh‎e ets.Add after:=Sheets‎(Sheets‎.Count)(表示在最后一‎张工作表后面‎新建一张工作‎表)Active‎ = "数据统计"(新建的工作表‎命名为“数据统计”)Dim row As Longrow = 1Dim num As LongFor row = 1 To nCells(row, 1) = Sheets‎(row).Namenum = 2DoIf Sheets‎(row).Cells(num, 1) <> "" Thennum = num + 1Else: GoTo loop1End IfLooploop1:num = num - 2Sheets‎(n + 1).Cells(row, 2) = numNextEnd Sub2、实例该工作簿有四‎张工作表,分别为“鸡屁股”、“鸡脚”、“鸡腿”、“鸡翅”。

剩下三张表如‎上图所示。

运行代码结果‎为:3、注意事项(1)该代码记录的‎判断标准为,A列单元格不‎为空格,则num加1‎,所以务必保证‎每条记录的A‎列不为空格(2)同工作簿的工‎作表名字不能‎相同,所以,如果工作簿中‎已经存在名为‎“数据统计”的工作表,则代码会发生‎错误(3)默认原工作表‎第一行均为表‎头,不算记录数目‎当中。

工作薄、工作表VBA事件程序一览表

工作薄、工作表VBA事件程序一览表

36 SheetPivotTableUpdate
数据透视表的工作表更新之后
37 SheetSelectionChange
工作表中选定区域改变时
38 SheetTableUpdate
当对工作表上的表进行更新时发生。
序号 1 2 3 4 5
6
7 8
9
10 11
12
13 14 15 16 17
39 Sync
40 WindowActivate 41 WindowDeactivate 42 WindowResize
该对象或成员已被弃用,但它仍保留为 对象模型的一部分以实现向后兼容。 在 新应用程序中,不应使用该对象或成员 工作薄的窗口激活时 工作薄的窗口变为非活动状态时 工作薄窗口调整大小时
事件 Activate BeforeDelete BeforeDoubleClick BeforeRightClick Calculate
9 BeforePrint
打印工作薄(或其中任何内容)之前
10 BeforeRemoteChange
在合并远程用户对工作簿的编辑之前发 生
11 BeforeSave
保存工作薄前
12 BeforeXmlExport
在 Microsoft Excel 保存或导出指定工 作簿中的 XML 数据之前发生此事件。
鼠标右键单击任一工作表时
26 SheetCalculate
工作表重新计算时
27 SheetChange
更改工作表中的单元格时
28 SheetDeactivate
任一工作表由活动状态转为非活动状态
29 SheetFollowHyperlink
单机Microsoft Excel中的任意超链接时

VBA 中的工作表和工作簿操作方法

VBA 中的工作表和工作簿操作方法

VBA 中的工作表和工作簿操作方法在 Excel 中,VBA(Visual Basic for Applications)是一种编程语言,可以用于自动化执行各种操作。

在VBA 中,工作表和工作簿是最常见的操作对象之一。

本文将介绍VBA 中的工作表和工作簿的基本操作方法,帮助您更好地利用 VBA 来进行数据分析和处理。

一、工作表的操作方法1. 打开工作表在 VBA 中,打开工作表的语法是:```Worksheets("工作表名称").Activate```其中,"工作表名称" 是您要打开的工作表的名称。

通过这种方式,您可以切换到特定的工作表。

2. 创建新工作表要在 VBA 中创建新的工作表,可以使用下面的语法:```Worksheets.Add```这将在活动工作簿中创建一个新的工作表。

您可以根据需要使用 VBA 代码自动创建新的工作表。

3. 删除工作表要删除工作表,可以使用下面的语法:```Worksheets("工作表名称").Delete```这将删除指定名称的工作表。

请注意,删除工作表操作是不可撤销的,因此在执行删除操作之前要确保操作的准确性。

4. 重命名工作表要重命名工作表,可以使用下面的语法:```Worksheets("旧工作表名称").Name = "新工作表名称"```这将把旧工作表名称修改为新的工作表名称。

通过这种方式,您可以方便地更改工作表的名称。

5. 循环访问工作表在 VBA 中,您可以使用循环语句来访问工作簿中的多个工作表。

以下是一个示例,演示如何使用 For Each 循环访问所有工作表并执行相同的操作:```For Each ws In Worksheets' 您的代码逻辑Next ws```通过这种方式,您可以逐个访问工作簿中的每个工作表,并在代码逻辑中执行相应的操作。

不同工作薄汇总VBA代码

不同工作薄汇总VBA代码

不同工作薄汇总VBA代码以下是一个用于将不同工作簿数据汇总的VBA代码示例,代码注释中有详细说明每一行代码的作用:```vbaSub 汇总不同工作簿数据Dim SummarySheet As Worksheet ' 汇总数据的工作表Set SummarySheet = ThisWorkbook.Sheets("汇总") ' 设置汇总数据的工作表名称Dim SourceFolder As String ' 存储源文件夹路径SourceFolder = "C:\SourceFolder" ' 设置源文件夹路径Dim FileExtension As String ' 存储文件扩展名FileExtension = "*.xlsx" ' 设置文件扩展名Dim FileName As String ' 存储文件名FileName = Dir(SourceFolder & "\" & FileExtension) ' 获取第一个文件Dim LastRow As Long ' 存储汇总数据的最后一行LastRow = SummarySheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 ' 获取汇总数据的最后一行Application.ScreenUpdating = False ' 关闭屏幕更新,加快代码执行速度Do While FileName <> "" ' 循环直到没有文件为止Dim SourceWorkbook As Workbook ' 存储源工作簿Set SourceWorkbook = Workbooks.Open(SourceFolder & "\" & FileName) ' 打开源工作簿Dim SourceSheet As Worksheet ' 存储源工作表Set SourceSheet = SourceWorkbook.Sheets("数据") ' 设置源工作表名称Dim LastRowSource As Long ' 存储源数据的最后一行LastRowSource = SourceSheet.Cells(Rows.Count,1).End(xlUp).Row ' 获取源数据的最后一行Dim SourceRange As Range ' 存储源数据的范围Set SourceRange = SourceSheet.Range("A2:G" & LastRowSource) ' 设置源数据的范围SourceRange.Copy SummarySheet.Cells(LastRow, 1) ' 将源数据复制到汇总数据的下一行SourceWorkbook.Close SaveChanges:=False ' 关闭源工作簿LastRow = SummarySheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 ' 更新汇总数据的最后一行FileName = Dir ' 获取下一个文件LoopApplication.ScreenUpdating = True ' 打开屏幕更新End Sub```这段代码假设要将位于文件夹路径`C:\SourceFolder`中名为`数据.xlsx`的工作簿的"数据"工作表数据汇总到当前工作簿的"汇总"工作表中。

VBA开发中的工作簿与工作表操作

VBA开发中的工作簿与工作表操作

VBA开发中的工作簿与工作表操作VBA(Visual Basic for Applications)是一种从微软开发的用于自动化任务的编程语言。

在Excel等Microsoft Office软件中,VBA能够帮助用户完成许多重复性的工作,提高工作效率。

在VBA开发中,对工作簿和工作表的操作是非常常见的任务。

本文将详细介绍如何在VBA 中对工作簿和工作表进行操作。

首先,我们需要了解工作簿(Workbook)和工作表(Worksheet)的概念。

工作簿是Excel文件的容器,可以包含一个或多个工作表。

而工作表则是Excel文件中的一个分页,用于存储和管理数据。

一、工作簿操作1. 创建和保存工作簿在VBA中,我们可以使用`Workbooks.Add`方法来创建一个新的工作簿,并使用`Workbook.SaveAs`方法将其保存到指定的路径。

以下是一个示例:```Sub CreateAndSaveWorkbook()Dim wb As WorkbookSet wb = Workbooks.Addwb.SaveAs "C:\Path\To\Workbook.xlsx"End Sub```2. 打开和关闭工作簿使用`Workbooks.Open`方法可以打开一个已存在的工作簿,使用`Workbook.Close`方法可以关闭当前工作簿并保存更改。

以下是一个示例:```Sub OpenAndCloseWorkbook()Dim wb As WorkbookSet wb = Workbooks.Open("C:\Path\To\Workbook.xlsx")' 在这里进行其他操作wb.Close SaveChanges:=TrueEnd Sub```3. 切换工作簿VBA中的`Workbooks`对象表示当前打开的所有工作簿集合。

使用`Workbook.Activate`方法可以激活一个工作簿,使其成为当前正在操作的工作簿。

阅读留痕---VBA记录Excel工作表打开、关闭的时间与次数

阅读留痕---VBA记录Excel工作表打开、关闭的时间与次数

阅读留痕---VBA记录Excel表的打开、关闭的时间与次数工作中,你是不是经常遇到这样的事:文件修改了无数次,文件的后缀名由“***修改版”、“***终版”、“***最终版”、“***最最终版”等等的修改,最后不知道到底哪一版是终稿了,只记得某个时间段修改的算是最后一版,可哪个版本才是呢?要是能记录工作表打开和关闭的时间就好了。

现在,我们就用Excel工作表打开、关闭触发时件记录工作表的浏览记录。

老规矩,直接上思路和代码。

1、打开Excel表,直接添加一张工作表,命名为“浏览记录”。

为防止有重名的工作表,先遍历工作表中有无“浏览记录”的工作表,没有就添加。

为防止后期误删该工作表,工作表添加后直接隐藏。

代码如下:1.1 添加工作表方法Function addWorkSheet()Dim ws As WorksheetDim NewCopySheet As WorksheetDim i As Integeri = 0Dim SheetName As StringSheetName = "浏览记录"On Error Resume Next '代码出错时继续运行Application.DisplayAlerts = False '防提示For Each ws In Worksheets '遍历工作表,查看是否有“浏览记录”的工作表 If = SheetName Theni = 1 '若有,变量赋值为1End IfNextIf i = 0 Then '没有,添加工作表,放在最后Sheets.Add after:=Sheets(Sheets.Count)Set NewCopySheet = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) = SheetName '工作表重命名为“浏览记录”End IfCall VeryHiddenSheet(SheetName) '调用隐藏工作表方法Call RecordOpen(SheetName) '调用记录方法End Function1.2隐藏工作表方法Function VeryHiddenSheet(ws) '留指定工作表,其余隐藏Dim Sheets As WorksheetApplication.DisplayAlerts = False '防提示'遍历工作表For Each Sheets In WorksheetsIf = ws Then '判断工作表名称,是的隐藏。

VBA工作薄工作表事件一览表修订稿

VBA工作薄工作表事件一览表修订稿

V B A工作薄工作表事件一览表集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]翻箱倒柜,无意中发现个好东东放到这里,大家查着也方便工作簿对象事件一览表当工作簿更改、工作簿中的任何工作表更改、加载宏更改或数据透视表更改时,将引发工作簿事件。

工作簿上的事件在默认情况下是可用的。

若要查看工作簿的事件过程,请用鼠标右键单击处于还原状态或最小化状态的工作簿窗口标题栏,再单击快捷菜单上的“查看代码”。

在“过程”下拉列表框内选择事件名称。

事件说明Activate激活工作薄时AddinInstall当工作簿作为加载宏安装时AddinUninstall工作簿作为加载宏卸载时BeforeClose关闭工作薄前BeforePrint打印工作薄(或其中任何内容)之前BeforeSave保存工作薄前Deactivate工作簿从活动状态转为非活动状态时NewSheet在工作簿中新建工作表时Open打开工作簿时PivotTableCloseConnection在数据透视表关闭与其数据源的连接之后PivotTableOpenConnection在数据透视表打开与其数据源的连接之后SheetActivate激活任何一张表时SheetBeforeDoubleClick双击任何工作表时SheetBeforeRightClick鼠标右键单击任一工作表时SheetCalculate工作表重新计算时SheetChange更改工作表中的单元格时SheetDeactivate任一工作表由活动状态转为非活动状态时SheetFollowHyperlink单击 Microsoft Excel 中的任意超链接时SheetPivotTableUpdate数据透视表的工作表更新之后SheetSelectionChange工作簿中的数据透视表更新之后WindowActivate工作簿的窗口激活时WindowDeactivate工作簿的窗口变为非活动状态时WindowResize工作簿窗口调整大小时本示例在打开工作簿时将 Microsoft Excel 窗口最大化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

翻箱倒柜,无意中发现个好东东放到这里,大家查着也方便工作簿对象事件一览表当工作簿更改、工作簿中的任何工作表更改、加载宏更改或数据透视表更改时,将引发工作簿事件。

工作簿上的事件在默认情况下是可用的。

若要查看工作簿的事件过程,请用鼠标右键单击处于还原状态或最小化状态的工作簿窗口标题栏,再单击快捷菜单上的“查看代码”。

在“过程”下拉列表框内选择事件名称。

事件? ? ? ? 说明Activate激活工作薄时AddinInstall当工作簿作为加载宏安装时AddinUninstall工作簿作为加载宏卸载时BeforeClose关闭工作薄前BeforePrint打印工作薄(或其中任何内容)之前BeforeSave保存工作薄前Deactivate工作簿从活动状态转为非活动状态时NewSheet在工作簿中新建工作表时Open打开工作簿时PivotTableCloseConnection在数据透视表关闭与其数据源的连接之后PivotTableOpenConnection在数据透视表打开与其数据源的连接之后SheetActivate激活任何一张表时SheetBeforeDoubleClick双击任何工作表时SheetBeforeRightClick鼠标右键单击任一工作表时SheetCalculate工作表重新计算时SheetChange更改工作表中的单元格时SheetDeactivate任一工作表由活动状态转为非活动状态时SheetFollowHyperlink单击 Microsoft Excel 中的任意超链接时SheetPivotTableUpdate数据透视表的工作表更新之后SheetSelectionChange工作簿中的数据透视表更新之后WindowActivate工作簿的窗口激活时WindowDeactivate工作簿的窗口变为非活动状态时WindowResize工作簿窗口调整大小时本示例在打开工作簿时将 Microsoft Excel 窗口最大化。

Sub Workbook_Open()? ? = xlMaximizedEnd Sub? ? ? ?Activate 事件激活一个工作簿、工作表、图表或嵌入图表时产生此事件。

Private Sub object_Activate()object? ?? ?Chart、Workbook、或者 Worksheet。

有关对 Chart 对象使用事件的详细信息,请参阅图表对象事件的用法。

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

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

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

Private Sub Worksheet_Activate()? ? Range("a1:a10").Sort Key1:=Range("a1"), Order:=xlAscendingEnd SubAddinInstall 事件当工作簿作为加载宏安装时,产生此事件。

Private Sub Workbook_AddinInstall()示例当指定工作簿作为加载宏安装时,本示例将一个控件添加到常用工具栏中。

Private Sub Workbook_AddinInstall()? ? With ("Standard").? ?? ???.Caption = "The AddIn's menu item"? ?? ???.OnAction = "''!Amacro"? ? End With End SubEnd Sub? ? ? ? ? ? ? ?AddinUninstall 事件当工作簿作为加载宏卸载时,产生此事件。

Private Sub Workbook_AddinUninstall()说明卸载加载宏时,该加载宏并不自动关闭。

示例当指定工作簿作为加载宏卸载时,本示例将 Microsoft Excel 最小化。

Private Sub Workbook_AddinUninstall()? ? = xlMinimizedEnd SubBeforeClose 事件在关闭工作簿之前,先产生此事件。

如果该工作簿已经更改过,则本事件在询问用户是否保存更改之前产生。

Private Sub Workbook_BeforeClose(Cancel As Boolean)Cancel? ?? ?当事件产生时为 False。

如果该事件过程将本参数设为 True,则停止对工作簿的关闭操作,工作薄仍处于打开状态。

示例本示例将 BeforeClose 事件的响应设置为保存工作簿的任何更改。

Private Sub Workbook_BeforeClose(Cancel as Boolean)? ? If = False ThenEnd Sub? ? ? ? ? ? ? ?BeforePrint 事件在打印指定工作簿(或者其中的任何内容)之前,产生此事件。

Private Sub Workbook_BeforePrint(Cancel As Boolean)Cancel? ?? ?当事件产生时为 False。

如果该事件过程将本参数设为 True,则当该过程运行结束之后不打印工作簿。

示例本示例在打印之前对当前活动工作簿的所有工作表重新计算。

Private Sub Workbook_BeforePrint(Cancel As Boolean)? ? For Each wk in Worksheets? ?? ???? ? NextEnd SubBeforeSave 事件保存工作簿之前产生此事件。

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean) SaveAsUi? ?? ?如果显示“另存为”对话框,则为 True。

Cancel? ?? ?当事件产生时为 False。

如果该事件过程将本参数设为 True,则该过程执行结束之后不保存工作簿。

示例本示例在保存工作簿之前询问用户是否保存。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _? ?? ???Cancel as Boolean)? ? a = MsgBox("Do you really want to save the workbook", vbYesNo)? ? If a = vbNo Then Cancel = TrueEnd Sub? ? ? ?Deactivate 事件图表、工作表或工作簿从活动状态转为非活动状态时产生此事件。

Private Sub object_Deactivate()object? ?? ?Chart、Workbook 或者 Worksheet。

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

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

Private Sub Workbook_Deactivate()? ? xlArrangeStyleTiledEnd SubNewSheet 事件当在工作簿中新建工作表时产生此事件。

Private Sub Workbook_NewSheet(ByVal Sh As Object)Sh? ?? ?新工作表。

可以是一个 Worksheet 或 Chart 对象。

示例本示例将新建的工作表移到工作簿的末尾。

Private Sub Workbook_NewSheet(ByVal Sh as Object)? ? After:= SheetsEnd Sub? ? ? ?Open 事件打开工作簿时,将产生本事件。

Private Sub Workbook_Open()示例每次打开工作簿时,本示例都最大化 Microsoft Excel 窗口。

Private Sub Workbook_Open()? ? = xlMaximizedEnd Sub? ? ? ?PivotTableCloseConnection 事件发生在数据透视表关闭与其数据源的连接之后。

Private Sub expression_PivotTableCloseConnection(ByVal Target As PivotTable) expression? ?? ?引用在类模块中带有事件声明的 Workbook 类型对象的变量。

Target? ? 必需。

选定的数据透视表。

示例本示例显示一则消息,说明数据透视表与其数据源的连接已经关闭。

本示例假定您已在类模块中声明了带有事件的 Workbook 类型的对象。

Private Sub ConnectionApp_PivotTableCloseConnection(ByVal Target As PivotTable) ? ? MsgBox "The PivotTable connection has been closed."End SubPivotTableOpenConnection 事件发生在数据透视表打开与其数据源的连接之后。

Private Sub expression_PivotTableOpenConnection(ByVal Target As PivotTable) expression? ?? ?引用在类模块中带有事件声明的 Workbook 类型对象的变量。

Target? ? 必需。

选定的数据透视表。

示例本示例显示一则消息,说明数据透视表与其数据源的连接已经打开。

本示例假定您已在类模块中声明了带有事件的 Workbook 类型的对象。

Private Sub ConnectionApp_PivotTableOpenConnection(ByVal Target As PivotTable) ? ? MsgBox "The PivotTable connection has been opened."End SubSheetActivate 事件当激活任何一张表时产生此事件。

Private Sub object_SheetActivate(ByVal Sh As Object)object? ?? ?Application 对象或 Workbook 对象。

Sh? ?? ?激活的表。

可以是一个 Chart 对象或 Worksheet 对象。

相关文档
最新文档