靠谱电子书 > 经管其他电子书 > excel_vba_编程教程(完整版) >

第76部分

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

小说: excel_vba_编程教程(完整版) 字数: 每页4000字

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



 作簿里添加新工作表以及关闭工 作簿时事件的顺序。  
 动作                            对象            事件顺序  
 打开一个新工作簿                Workbook       NewWorkbook;  
                                                 WindowDeactivate;  
                                                 WorkbookDeactivate;  
                                                 WorkbookActivate;  
                                                 WindowActivate  
 往工作簿添加新工作表            Workbook        WorkbookNewSheet; SheetDeactivate;   
   
                                                 SheetActivate      
 关闭工作簿                      Workbook       WorkbookBeforeClose;  
                                                 WindowDeactivate;  
                                                 WorkbookDeactivate;  
                                                 WorkbookActivate; WindowActivate  

4。工作表事件  

  工作表对象相应例如工作表激活和失活事件,计算工作表事件,工作表更改事件和双击或右键单 
 击事件。本节讨论一些工作表对 象能够响应的事件。  
 事件名称                        激活  
 事件描述                        示例1  
    当用户激活工作表时,发生该  Dim shtName As String  ‘declared at the top 在模块上部声明  
 事 件                                                   ‘ of the module  
                                 Private Sub Worksheet_Activate()  
                                      shtName = ActiveSheet。Name  
      
                                     Range(〃B2〃)。Select  
                                 End Sub  
   
 示例程序中,每次该工作表被激活时,选择单元格B2  
 示例1 – 试验:在VB编辑器窗口,激活工程浏览器窗口并打开Excel对象文件夹。双击Sheet2(Sheet2), 
 并且输入示例程序到Sheet2  

                                            268 

… 页面 285…

代码窗口。接下来,切换到Excel窗口并激活Sheet2。注意,当Sheet2被激活时,被选择的总是单 
元格B2。  
事件名称                      失活  
事件描述                      示例2  
当用户激活不同的工作表时,发       Worksheet_Deactivate()  
生该事件                               MsgBox 〃You deactivated 〃 & _  
                                       shtName & 〃。〃 & vbCrLf & _  
                                      〃You switched to 〃 & _  
                                      ActiveSheet。Name & 〃。〃  
                                   End Sub  
Private Sub  
  
  
示例程序中,当Sheet2失活时,显示一个信息框  
示例2 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹,双击Sheet2  
(Sheet2),然后输入示例程序。 接下来,切换到Excel应用程序窗口并且激活Sheet2。你在示例1 
里创建的Worksheet_Activate过程将会运行,Excel会选中单元 格B2并且将工作表名称存储于你 
在Sheet2的代码模块上面声明的全局变量shtName里面。现在,点击当前工作簿里的其它工作 表, 
注意,Excel将显示你离开的工作表名称和你要切换到的工作表名称。  
事件名称                      选择变化  
事件描述                      示例3  
当用户选择工作表单元格时,发 Private Sub Worksheet_SelectionChange(ByVal Target As  
生该事件                         Excel。Range) ‘可省略Excel,下同。  
                                 On Error Resume Next  
                                 Set myRange = Intersect(Range(〃A1:A10〃); Target)  
                                 If Not myRange Is Nothing Then  
                                  MsgBox 〃Data entry or edits are not permitted。〃  
                                 End If  
                               End Sub  
示例程序中,当用户选择任何myRange中的单元格或区域时,显示一个信息框  
示例3 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹,双击Sheet3  
(Sheet3),并且在Sheet3代码窗 口里输入该示例程序。然后切换到Excel窗口并激活Sheet3。点 
击给定区域A1:A10中的任何单元格。注意,Excel将显示一个信 息。  
                               Private Sub Worksheet_Change(ByVal Target _  
事件名称                      变化  
                                 As Excel。Range)  
事件描述                      例4  
                                 Application。EnableEvents = False  
当用户更改单元格内容时,引发     Target = UCase(Target)  
该事件                           Columns(Targetlumn)。AutoFit  
                                 Application。EnableEvents = True  
                               End Sub  
  
  
示例程序中,你输入的内容会自动变为大写,并且该列列宽将自动适应内容文本长短  
 (Sheet1),并且在Sheet1代码窗 口里输入该示例程序。然后切换到Excel窗口并激活Sheet1。在 
任意单元格里输入任何文本,注意,你一旦按下回车键,Excel 就会将该文本变为大写,然后该 
列自动适应文本长度。  
事件名称                      计算  
事件描述                      示例5  
当用户重新计算工作表时,引发 Private Sub Worksheet_Calculate()  
该事件                           MsgBox 〃The worksheet was recalculated。〃  
                               End Sub  
  
一旦工作表重新计算,示例程序就会弹出一信息  
  
示例5 – 试验:在当前工作簿里添加一个新工作表,练习假定Excel会在你的工作簿里放置Sheet4。 
往Sheet4的单元格A2里输入1,B2里输入2。在单元格C2里输入下述公式:= A2 + B2。在VB编辑器 
窗口,激活工程浏览器窗口并且打开Excel对象文件夹, 双击Sheet4 (Sheet4),并且输入如上所 

                                          269 

… 页面 286…

示得Worksheet_Calculate事件程序。切换到Excel窗口并激活Sheet4,在B2单元格里输 入任何数 
字。注意,当退出编辑模式后,Worksheet_Calculate事件就被引发了,你也就看到了一个自定义 
的信息。  
  
事件名称                      双击前  
事件描述                      示例6  
当用户双击工作表单元格时,引 Private Sub Worksheet_BeforeDoubleClick(ByVal _  
发该事件                        Target As Range; Cancel As Boolean)  
                                If Target。Address = Range(〃C9〃) Then  
                                  MsgBox 〃No double…clicking; please。〃  
                                  Cancel = True  
                                Else  
                                  MsgBox 〃You may edit this cell。〃  
                                End If  
                              End Sub  
  
示例程序不允许双击时单元格内部直接编辑C9  
示例6 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹,双击Sheet2  
(Sheet2),并且在Sheet2代码窗 口里输入该示例程序。然后切换到Excel窗口并激活Sheet2。当 
你双击单元格C9时,该事件过程取消了内置的Excel行为,用户 不允许进行单元格内部直接编辑。 
然而,用户可以绕过该限制,点击编辑栏或者按下F2键。当你编写一些事件程序来禁止访问 某 
些功能时,请编写一些额外的代码以禁止一些工作区。 (如隐藏编辑栏,隐藏工作表标签等)  
事件名称                      右键单击前  
事件描述                      示例7  
                                
当用户右键单击工作表单元格    Private Sub Worksheet_BeforeRightClick(ByVal _  
时,引发该事件                  Target As Range; Cancel As Boolean)  
                                  With ApplicationmandBars(〃Cell〃)  
                                    。Reset  
                                    If Target。Rowsunt 》 1 Or _  
                                      Targetlumnsunt 》 1 Then  
                                      With ntrols。Add(Type:=msoControlButton; _  
                                        before:=1; temporary:=True)  
                                        。Caption = 〃Print。。。〃  
                                        。OnAction = 〃PrintMe〃  
                                      End With  
                                    End If 

                                         270 

… 页面 287…

                                  End With  
                              End Sub  
                              Sub PrintMe()  
                                  Application。Dialogs(xlDialogPrint)。Show arg12:=1  
                              End Sub  
示例程序中,当用户选择区域不止一行一列时,就会在单元格快捷菜单上添加一个Print选项  
示例7 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹,双击Sheet2  
(Sheet2),并且在Sheet2代码窗 口里输入该示例程序。在当前工程里添加一个新模块,并且输入 
PrintMe过程,如上所示。当用户从快捷菜单上选择Print选项时, 该过程就会被 
Worksheet_BeforeRightClick事件调用。注意,对话框的Show方法后面带了个名为arg12:=1的参 
数。该参数让打 印对话框显示时,勾选“所选区域”(通常是“所选工作表”)。在适当的模块 
里输入完两个过程后,切换到Excel窗口并激活 Sheet2。在任何单个单元格上单击右键,注意, 
这时出现的快捷菜单为缺省选项。现在,我们重新选择,这次包括多个单元格, 并且在所选区域 
上单击右键,你将看到Print…选项出现在第一位置。点击Print选项,注意,打印对话框显示的 
是所选区域,而 不是缺省的所选工作表。  
注意:参见第十章中使用快捷菜单的更多信息,还有,参见图10…3,如何定位Excel的内置参数列 
表。  
事件名称                      跟踪链接  
事件描述                      示例8  
当用户点击Excel工作表中的     Private Sub Worksheet_FollowHyperlink(ByVal _  
链 接时,引发该事件             Target As Hyperlink)  
                                  Target。AddToFavorites  
                              End Sub  
  
示例程序将用户点击的链接添加到IE的收藏夹里  
示例8 – 试验:在VB编辑器窗口,激活工程浏览器窗口并且打开Excel对象文件夹,双击Sheet1  
(Sheet1),并且在Sheet1代码窗 口里输入该示例程序。切换到Excel窗口,并在任何单元格里输 
入一网址,比如wordware然后回车。现在,点击该链 接激活该网址,当IE窗口出现后, 
打开收藏菜单,就会发现Word

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的