vba中工作簿事件,工作表事件,EnableEvents 属性

各种事件过程代码的执行顺序:

先出发工作表,再工作簿,最后应用程序

应用程序事件注释
NewWorkbook当新建一个工作簿时发生此事件
SheetActivate当激活任何工作表时发生此事件
SheetBeforeDoubleClick在双击任何工作表前发生此事件
SheetBeforeRightClick右键单击任何工作表前发生此事件
SheetCalculate在重新计算工作表时发生此事件
SheetChange更改任何工作表的单元格时发生此事件
SheetDeactivate当工作表失去焦点时发生此事件(离开工作表时)。 
SheetFollowHyperlink在单击工作簿中的任何超链接时发生。 
SheetPivotTableUpdate在更新数据透视表的工作表后发生。
SheetSelectionChange所选内容在任何工作表上更改时发生。
WindowActivate在激活任何工作簿窗口时发生。 
WindowDeactivate工作簿的窗口变为非活动状态时,将产生本事件。
WindowResize改变工作簿窗口大小时发生
WorkbookActivate当激活任何工作簿时发生此事件
WorkbookAddinInstall工作簿为加载宏安装时发生此事件
WorkbookAddinUninstall当任一工作簿作为卸载宏时发生
WorkbookAfterXmlEmport在保存或导出工作簿中的XML数据之后发生此事件
WorkbookAfterXmlImport当刷新现有的XML数据链接或新的XML数据被导入任一打开的Excel工作簿之后时发生
WorkbookBeforeClose关闭任何工作簿前发生此事件
WorkbookBeforePrint在打印工作簿前发生此事件
WorkbookBeforeSave在保存任何工作簿前发生引事件
WorkbookBeforeXmlExport保存或导出XML数据前发生的事件
WorkbookBeforeXmlImport当刷新现有的XML数据链接或新的XML数据被导入任一打开的Excel工作簿之前时发生
WorkbookDeactivate当打开的工作簿转为非活动状态时发生此事件
WorkbookNewSheet 在任何打开的工作簿中新建工作表时发生此事件
WorkbookOpen当打开一个工作簿时发生此事件
WorkbookPivotTableCloseCloseConnection在数据透视表的链接关闭之后发生此事件
WorkbookPivotTableOpenCloseConnection在数据透视表的链接打开之后发生此事件
WorkbookRowsetCompletd如果用户在OLAP数据透视表上深化记录集或调用行集操作,则会发生WorkbookRowsetComplete事件
Workbooksync当作为“文档工作区”一部分的工作簿的本地副本与服务器上的副本进行同步时发生此事件
工作簿事件注释
Activate激活工作簿、工作表、图表工作表或嵌入式图表时发生此事件
AddinInstall当工作簿作为加载宏安装时,发生此事件
AddinUninstall当工作簿作为加载宏卸载时,发生此事件
AfterXmlExport在Excel保存或导出指定工作簿中的XML数据之后发生此事件
AfterXmlImport在刷新现有的XML数据链接或将新的XML数据导入到指定的Excel工作簿之后,发生此事件
BeforeClose在关闭工作簿之前,先产生此事件。如果该工作簿已经更改过,则本事件在询问用户是否保存更改之前产生。
BeforePrint在打印指定工作簿(或者其中的任何内容)之前,发生此事件
BeforeSave保存工作簿之前发生此事件
BeforeXmlExport在Excel保存或导出指定工作簿中的XML数据之后发生此事件
BeforeXmlImport在刷新现有的XML数据链接或将新的XML数据导入到指定的Excel工作簿之后,发生此事件
Deactivate图表、工作表或工作簿被停用时发生此事件
NewSheet当在工作簿中新建工作表时发生此事件
Open打开工作簿时,发生此事件
PivotTableCloseConnection数据透视表关闭与其数据源的链接后发生此事件
PivotTableOpenConnection数据透视表打开与其数据源的链接后发生此事件
RowsetComplete如果用户在OLAP数据透视表上深化记录集或调用行集操作,则会引发此事件
SheetActivate当激活任何工作表时发生 此事件
SheetBeforeDoubleClick当双击任何工作表时发生此事件,此事件先于默认的双击操作发生
SheetBeforeRightClick右键单击任一工作表时发生此事件,此事件先于默认的右键单击操作
SheetCalculate在重新计算工作表时或在图表上绘制更改的数据之生发生此事件
SheetChange当用户或外部链接更改了任何工作表中的单元格时发生此事件
SheetDeactivate当任何工作表停用时发生此事件
SheetFollowHyperlink单击Excel中的任何超链接时发生此事件
SheetPivotTableUpdate在数据透视表的工作表更新之后发生此事件
SheetSelectionChange任一工作表的选定区域发生更改时,将发生此事件
Sync当作为“文档工作区”一部分的工作表的本地副本与服务器上的副本进行同步时,发生此事件
WindowActivate工作簿窗口被停用时发生此事件
WindowDeactivate任何工作簿窗口调整大小时发生此事件
WindowResize任何工作簿窗口被停用时发生此事件
工作表事件注释
Activate激活工作簿,工作表,图表等发生的事件
BeforeDoubleClick在工作表中双击前发生的事件
BeforeRightClick右键单击工作表前发生的事件
Calculate工作表重新计算之后发生的事件
Change更改工作表中的单元格发生的事件
Deactivate工作表,图表停用(焦点离开)时发生的事件
FollowHyperlink单击工作表上的任意超链接时,发生此事件
PivotTableUpdate工作簿中的数据透视表更新后发生此事件
SelectionChange当工作表上选定区域发生改变时发生此事件

扩展:Application.EnableEvents 属性
'Application.EnableEvents = True/FALSE
'如果对指定对象启用事件,则该属性值为 True。Boolean 类型,可读写。
'作用:临时关闭,防止死循环

案例:

 Private Sub Worksheet_Activate() '激活工作表触发的程序
a = InputBox("请输入密码")
If a = 123 Then
    Cells.Font.Color = RGB(0, 0, 0)
    Application.EnableEvents = False 
Else
    Sheet3.Activate
End If
End Sub


Private Sub Workbook_Open()
Application.EnableEvents = True '让事件生效
Sheet2.Cells.Font.Color = RGB(255, 255, 255)
Sheet3.Activate
End Sub

 

 object 是对象的意思

番外补充:

 

 

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java绘制不规则几何图形,比如划曲线,写字,线条随意画,如截图所示,甚至可以写出文字:   不规则图形的绘制代码:   public class IrregularShapeDemo extends JFrame {    GeneralPath gPath= new GeneralPath(); //GeneralPath对象实例   //构造函数   public IrregularShapeDemo() {    super("不规则图形的绘制"); //调用父类构造函数    enableEvents(AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK); //允许事件    setSize(300, 200); //设置窗口尺寸    setVisible(true); //设置窗口可视    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序    }    public void paint(Graphics g) { //重载窗口组件的paint()方法    Graphics2D g2D = (Graphics2D)g; //获取图形环境    g2D.draw(gPath); //绘制路径    }    public static void main(String[] args) {    new IrregularShapeDemo();    }    protected void processMouseEvent(MouseEvent e) { //鼠标事件处理    if(e.getID() == MouseEvent.MOUSE_PRESSED) {    aPoint = e.getPoint(); //得到当前鼠标点    gPath = new GeneralPath(); //重新实例化GeneralPath对象    gPath.moveTo(aPoint.x,aPoint.y); //设置路径点    }    }    protected void processMouseMotionEvent(MouseEvent e) { //鼠标运动事件处理    if(e.getID() == MouseEvent.MOUSE_DRAGGED) {    aPoint = e.getPoint(); //得到当前鼠标点    gPath.lineTo(aPoint.x, aPoint.y); //设置路径    gPath.moveTo(aPoint.x, aPoint.y);    repaint(); //重绘组件    }    }   }
您可以使用以下VBA代码来合并当前文件夹下所有工作簿的所有工作,并处理合并单元格的情况: ```vba Sub 合并工作簿工作() Dim MyPath As String Dim MyFile As String Dim WB As Workbook Dim WS As Worksheet Dim DestWS As Worksheet Dim LastRow As Long '设置合并后的目标工作 Set DestWS = ThisWorkbook.Sheets.Add(After:= _ ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) DestWS.Name = "合并结果" '获取当前文件夹路径 MyPath = ThisWorkbook.Path & "\" '关闭屏幕更新和事件处理,加快处理速度 Application.ScreenUpdating = False Application.EnableEvents = False '循环遍历当前文件夹下的所有工作簿 MyFile = Dir(MyPath & "*.xlsx") Do While MyFile <> "" '排除当前工作簿 If MyFile <> ThisWorkbook.Name Then '打开工作簿,合并工作到目标工作 Set WB = Workbooks.Open(MyPath & MyFile) For Each WS In WB.Sheets '复制工作到目标工作的下一行 WS.Copy After:=DestWS '合并单元格处理 With DestWS.Cells(DestWS.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) LastRow = .Row + .MergeArea.Rows.Count - 1 If .MergeCells Then .MergeArea.Copy .PasteSpecial xlPasteAll Application.CutCopyMode = False DestWS.Cells(LastRow + 1, 1).ClearFormats End If End With Next WS WB.Close False '关闭工作簿,不保存更改 End If MyFile = Dir Loop '恢复屏幕更新和事件处理,并选合并结果工作 Application.ScreenUpdating = True Application.EnableEvents = True DestWS.Select End Sub ``` 请注意,此代码会在当前工作簿创建一个名为"合并结果"的新工作,并将所有工作簿的所有工作合并到该工作。在合并过程,它会处理合并单元格的情况,将其展开为多个单元格。 您只需将此代码复制到VBA编辑器的模块,并运行即可实现合并操作。在运行之前,请确保您保存了当前工作簿,并将其他要合并的工作簿放置在同一文件夹。 希望对您有帮助!如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值