友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
依依小说 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

excel_vba_编程教程(完整版)-第81部分

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



                                          Wb。SaveAs FileFormat:=xlWorkbookNormal  
                                         End If  
                                 End If  
                               End Sub  
 WorkbookActivate              当用户将焦点移到一个开启的工作簿时引发该事件  
 WorkbookDeactivate            当用户将焦点从一个开启的工作簿移开时引发该事件  
 WorkbookNewSheet              当用户在一个打开的工作簿上新建一个工作表时引发该事件  
 WorkbookBeforeSave            该事件发生在以大开工作簿被保护之前  

                                          285 

… 页面 302…

                               Private Sub App_WorkbookBeforeSave(ByVal _  
                                 Wb As Workbook; _  
                                 ByVal SaveAsUI As Boolean; _  
                                 Cancel As Boolean)  
                                If Wb。Path  vbNullString Then  
                                 ActiveWindow。Caption = Wb。FullName & _  
                                             〃 'Last Saved: 〃 & Time & 〃'〃  
                                                End If  
                               End Sub  
 WorkbookBeforePrint           该事件发生在以大开工作簿被打印之前  
                               Private Sub App_WorkbookBeforePrint(ByVal _  
                                 Wb As Workbook; Cancel As Boolean)  
                                               Wb。PrintOut   
                                            Copies:=2  
                               End Sub  
 WorkbookBeforeClose           该事件发生于关闭工作簿之前  
                               Private Sub App_WorkbookBeforeClose( ByVal _  
                                 Wb As Workbook; Cancel As Boolean)  
                                      Dim r As Integer  
                                          Sheets。Add  
                                         r = 1  
                               For Each p In Wb。BuiltinDocumentProperties  
                               On Error GoTo ErrorHandle  
                               Cells(r; 1)。Value = p。Name & 〃 = 〃 &   
                                   ActiveWorkbook。 _  
                              BuiltinDocumentProperties _  
                                          。Item(p。Name)。Value  
                                            r = r + 1  
                                          Next  
                                            Exit Sub  
 ErrorHandle:  
                                    Cells(r; 1)。Value = p。Name  
                                              Resume Next  
                               End Sub  
 WorkbookAddInInstall          该事件发生于用户安装加载宏之时  
 WorkbookAddInUninstall        该事件发生于用户卸载加载宏之时  
 SheetActivate                 当用户激活开启工作簿中某个工作表时引发该事件  
 SheetDeactivate               当用户离开某个工作表时引发该事件  
 SheetSelectionChange          当用户改变选择工作表上的区域时引发该事件  
                               Private Sub App_SheetSelectionChange( _  
                                 ByVal Sh As Object; ByVal Target As Range)  
                              If Selectionunt 》 1 Or _  
                               (Selectionunt 《 2 And _  
                              IsEmpty(Target。Value)) Then  
                                             Application。StatusBar = Target。Address  
                                     Else  
                                               
                                     End If  Application。StatusBar = Target。Address & _  
                               End Sub         〃(〃 & Target。Value & 〃)〃  

  
 SheetChange                   当用户在一个打开的工作簿里改变单元格里的内容时引发该事 
 件  
 SheetCalculate                当用户重新计算某个开启的工作簿里的工作表时引发该事件  
 SheetBeforeDoubleClick        当用户双击工作表时引发该事件  
 SheetBeforeRightClick         当用户右键单击工作表单元格时引发该事件  
 WindowActivate                当用户激活一个打开的窗口时引发该事件  
Private Sub App_WindowActivate(ByVal _  
  Wb As Workbook; ByVal Wn As Window)  
                              Wn。DisplayFormulas = True  

                                          286 

… 页面 303…

                                 End Sub  
WindowDeactivate                 当用户将焦点从开启的窗口移走时引发该事件  
WindowResize                     当用户调整开启的窗口的大小时引发该事件  
WorkbookPivotTableClose…         在数据透视表报告连接被断开后,引发该事件  
Connection                         
 (Excel 2002的新事件)          在数据透视表报告连接被打开后引发该事件  

WorkbookPivotTableOpen…  
Connection  
 (Excel 2002的新事件)  

                                             287 

… 页面 304…

  

9。查询表时间  

  查询表是Excel工作表里代表从外部数据源得来的数据,例如SQL服务器数据库,Access数据 
 库,网页,或者文本文件。查询表 用对象QueryTable代表。Excel为QueryTable对象提供了两 
 种事件:BeforeRefresh和AfterRefresh。想要试验一下本章后面示范 的这些示例过程的话, 
 那么请执行下面的这些操作。本示例假设你的机器上安装了Access以及其例子Northwind数据 
 库。  
 1。  在Excel应用软件窗口,选择数据|导入外部数据,并且选择新建数据库查询以创建一个新 
 数据库查询  
 2。  在数据源对话框里,选择新数据源,并点击确定  
 3。  在创建新数据源对话框里,输入SampleDb作为数据源名称  
 4。  在创建新数据源对话框上,从第二步旁边的下拉列表里,选择Microsoft Access driver  
  (*。mdb)  
 5。  点击连接按钮  
 6。  在ODBC Microsoft Access安装对话框上点击选择按钮  
 7。  在选择数据库对话框上,找到文件Northwind。mdb。该文件通常可以在C:Program  
     FilesMicrosoft OfficeOfficeSamples文 件夹找到(译者用的是Office 2003,没有 
      该文件,有一个类似的Nwind。mdb文件。大家可以在电脑上查找一下)  
 8。  选择该文件并且点击确定以关闭该选择数据库对话框  
 9。  在点击确定退出ODBC Microsoft Access安装对话框  
 10。   在创建新数据源对话框的第四步,在下拉列表框里选择Categories  
 11。   点击确定以关闭创建新数据源对话框  
 12。   在选择数据源对话框上,数据源名称SampleDb现在应该被加亮了,点击确定  
 13。   在查询向导 – 选择列对话框里,点击》按钮,将Categories表中所有的区域移到查询框 
 的列中去  
 14。   点击下一步,直到你看到查询向导 – 完成对话框  
 15。   在查询向导 – 完成对话框上,确保将数据返回到Microsoft Excel选项按钮是被勾选上 
 的,并且点击完成  
 16。   在导入数据对话框,当前电子表格单元格是被选中的,点击单元格A1并点击确定关闭对 
 话框。 完成上述步骤后,Northwind数据库里Catetory表中的数据应该被放置在当前工作表里 
 面了。重新获得数据是得花费好些步骤的。 在下章,你将学习如何编程创建查询表。想要给 
 查询表对象编写事件过程的话,你就必须创建一个类模块并且使用WithEvents 关键字声明一 
 个QueryTable对象。  
 1。  插入类模块到当前VBA工程并重命名为clsQryTbl  
 2。  在clsQryTbl代码窗口,输入下述语句:  
     Public WithEvents qrytbl As QueryTable  
      当你使用WithEvents关键字声明完新对象qrytbl后,它就会出现在类模块的对象下拉列表 
      中  
 3。  在clsQryTbl代码窗口,输入两个事件过程,如下面的表格所示:QryTbl_BeforeRefresh 
     和QryTbl_AfterRefresh。在你能够 引发这些事件过程之前,你必须将你在类模块里声 
      明的对象和某个特定的QueryTable对象连接起来  
 4。  插入一个标准模块,并输入下述代码:         
      Public Sub Auto_Open()  
         ' connect the class module and its objects with the Query object  
         Set sampleQry。qrytbl = ActiveSheet。QueryTables(1)  
      End Sub 上面的程序创建了一个QueryTable类(clsQryTbl)的新示例,并且将它和活动 
      工作表里的第一个查询表连接起来。当你打开 该工作簿时,Auto_Open过程会自动执行。 
      因此你不必手动运行它,以确保当数据被刷新时,查询事件将会被引发。  
 5。  运行第四步输入Auto_Open过程,在你运行完该初始化过程后,你在类模块里声明的对象就 
 会指向特定的查询表对象  
 6。  在你放置从Access里导入的Category的工作表里,更改某个类别。选择查询表中的任意单 
     元格,并且点击外部数据工具栏 上的刷新数据,或者选择数据|刷新数据。这次,事件过程 
      qrytbl_BeforeRefresh将会被引发了,你将看到一个自定义信息框。 如果你点击是,该 
      数据将会被数据库里存在的数据刷新掉,你更改过的数据将会被覆盖掉。  
   
   
 事件名称                        描述  

                                           288 

… 页面 305…

 BeforeRefresh                  该事件发生在查询表被刷新数据之前  
                                Private Sub qryTbl_BeforeRefresh(Cancel As Boolean)  
                                  Response = MsgBox(〃Are you sure you 〃 _  
                                    & 〃 want to refresh now?〃; vbYesNoCancel)  
                                  If Response = vbNo Then Cancel = True  
                                End Sub  
 AfterRefresh                   该事件发生在查询完成或者被取消。如果查询成功完成则参 
 数Success  
                                为True。  
                                Private Sub qryTbl_AfterRefresh(ByVal Success As  
                                Boolean)  
                                  If Success Then  
                                      MsgBox 〃The data has been refreshed。〃  
                                  Else  
                                  MsgBox 〃The query failed。〃  
                                 End If  
                                End Sub  

10。接下来……   

     在本章中,你获得
返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!