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

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

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



mandBars。Add(Name; Position; MenuBar; Temporary)   
可选参数Name是你想要分配给你的新命令条的名称,如果你不明确该名称,VB会分配一个普通名称, 
例如“自定义 1”。Position参数决定新命令条将出现在屏幕的哪里(参见表12…2)。  
表12…2 mandBar对象的位置常量  
位置常量             索引           描述  
msoBarLeft           0              命令栏位于应用程序窗口的左边  
msoBarRight          2              命令栏位于应用程序窗口的右边  
msoBarTop            1              命令栏位于应用程序窗口的上面  
msoBarBottom         3              命令栏位于应用程序窗口的底部  
msoBarFloating       4              命令栏浮在屏幕上  
msoBarPopup          5              快捷菜单  
msoBarMenuBar        6              命令栏取代系统菜单(仅用于Macintosh)  
  
参数MenuBar是个逻辑值(True或False),它决定新命令条是否取代活动菜单条。如果你想要取代 
活动菜单条的话,就输入True,否则使用False。参数Temporary是逻辑值(True或False),决定何 
时删除命令条。使用True,当Excel程序关闭的时候命令条就会自动删除。使用False的话,当你退 

                                           233 

… 页面 250…

出该程序的时候,该工具栏不会被删除。  
你可以在立即窗口里试验创建工具栏。  
1。  在立即窗口里面输入下述语句,注意要将完整的语句书写在一行:  
    set newToolbar = mandBars。Add(〃Budget Plans〃; msoBarRight; False; True)   
    当你按下回车键时,VB就会在集合mandBars里面添加一个新的工具栏,具体名称为“Budget  
    Plans”。切换到Excel应用软件窗口并且选择“视图”|“工具栏”,你可以看到Excel显示的一 
    列可用工具栏清单,包括你刚才创建的那个(参见图12…2)。  

                                                                        
图12…2 你在Excel内置工具栏清单里面添加了一个自定义工具栏  
2。  切换回VB编辑器窗口,并在立即窗口里输入下述语句:  
    mandBars(〃Budget Plans〃)。Visible = True  
    切换到Excel应用程序窗口查看该工具栏,工具栏“Budget Plans”出现在垂直滚动条的右边。 
    还记得你创建该工具栏的时候吗?你使用的是常量msoBarRight来决定其位置。  
3。  现在关闭Excel应用软件,重新打开它并且查看工具栏Budget Plans是否依然出现在应用软件 
    窗口的右边。  
    因为你在Add方法最后一个参数的位置使用了逻辑值True,工具栏Budget Plans应该已经不在 
    了。  
有个好主意,在你试图创建新工具栏之前,需要检查某个特定名称的工具栏是否已经存在于集合 
mandBars里了。下述过程将创建工具栏“Budget Plans”,倘若不存在具有该相同名称的工具栏 
的话。在工程CustomTools (Chap12。xls)的代码窗口里面输入该过程,并且运行两次。第二次执行 
该过程的时候,你将看到一信息,提醒你已经有了这样一个工具栏。  
Sub MakeToolBar()   
     Dim bar As mandBar   
     Dim flagExists As Boolean   
     flagExists = False   

                                          234 

… 页面 251…

     For Each bar In mandBars   
          If bar。Name = 〃Budget Plans〃 Then   
              flagExists = True   
              MsgBox 〃The toolbar with this name already exists。〃   
              Exit For   
         End If   
     Next bar   
     If Not flagExists Then   
         Set bar = mandBars。Add(〃Budget Plans〃; _   
           msoBarBottom; False; True)   
         mandBars(〃Budget Plans〃)。Visible = True   
     End If   
     Set bar = Nothing   
End Sub   

3。删除自定义工具栏  

如果你创建了工具栏但不想保留它,那么你可以去掉它而不用关闭Excel应用软件,只要使用Delete 
方法就可以了。例如要删除工具栏“Budget Plans”,你可以在立即窗口里输入下述语句:  
mandBars(〃Budget Plans〃)。Delete   
注意,你不能删除内置工具栏。  

4。使用 mandBar 的属性  

对象mandBar有许多属性,你在立即窗口里面使用它们中的一些。  
1。  使用立即窗口来创建一个叫“My Reports”的工具栏:  
    set myBar= mandBars。Add(〃My Reports〃; msoBarBottom; False)   
2。  使用下述语句来确定某个工具栏是否是内置的:  
    ?mandBars(〃My Reports〃)。BuiltIn   
3。  输入下述语句可以确定新工具栏在mandBars集合里的索引号:  
    ?mandBars(〃My Reports〃)。Index   
当设置属性Visible为True时,该工具栏将显示在屏幕上;而设置属性Visible为False时则可以隐 
藏该工具栏。  

5。使用 mandBar 控件  

一个空的工具栏并不能做什么,要让你的工具栏有用的话,你就需要将想要地控件放置在上面并且 
给它们指定适当的VBA过程。有三种类型的命令条控件,如下表所示:  
表12…3:可以放置在工具栏上的控件类型  
对象名称               描述  
mandBarButton       该对象代表工具栏按钮和菜单选项。当你点击按钮或者选择菜单选项时, 
                       就会执行相应的VBA过程  
mandBarPopup        该对象代表弹出控件,点击时显示一菜单或者子菜单  
mandBarboBox     该对象代表文本框、列表框或者下拉列表框(例如,格式工具栏上的字 
                       体和字号控件,或者常用工具栏上的缩放控件)  
  
mandBar对象的一个重要属性是Controls属性,该属性返回某特定工具栏上所有控件的集合。  
1。  在立即窗口里敲入下述语句:  
    ?mandBars(1)ntrols。 Count   
    当你按下回车键时,VB就会返回工作表系统菜单条上所有可用控件的总数。  
2。  输入下述语句来返回工作表系统菜单条上第一个控件的名称:  
    ?mandBars(1)ntrols(1)。Caption   
    VB返回第一个控件的名称:&File。字母F前面的字符&表明该菜单选项可以通过键盘按下Alt+F 

                                          235 

… 页面 252…

来执行。  
3。  输入下面的语句来执行一特定选项:  
    mandBars(1)ntrols(1)。Execute   
    方法Execute激活该特定的控件,文件菜单应该被打开了。  
4。  在当前工程代码窗口里输入过程ControlList,来将活动菜单条上所有控件的名称写入立即窗 
    口:  
     Sub ControlList()   
       Dim bar As mandBar   
       Dim ctrl As mandBarControl   
       Set bar = mandBars(1)   
       Debug。Print bar。Name & 〃: 〃 & barntrolsunt   
       For Each ctrl In barntrols   
           Debug。Print ctrl。Caption   
       Next   
     End Sub   
5。  运行上述过程后,查看立即窗口,你将看到下述清单:  
     Worksheet Menu Bar: 10   
     &File   
     &Edit   
     &View   
     &Insert   
     F&ormat   
     &Tools   
     &Data   
     A&ction   
     &Window   
     &Help  
为mandBar添加控件  
要运行期望的VBA过程的话,那么你可以添加一个内置的或者自定义控件到内置工具栏。如果你更 
愿意,你也可以添加控件到自定义工具栏。无论你是添加内置控件还是自定义控件,到内置工具栏 
或者到自定义工具栏,总是要使用Add方法,语法如下:  
mandBarntrols。Add(Type; Id; Parameter; Before; Temporary)   
mandBar是你要添加控件的那个对象。  
Type是一常量,决定你添加的自定义控件的类型,你可以从下述类型中选择一个:  
msoControlButton        1   
msoControlPopup     10   
msoControlEdit      2   
msoControlDropDown  3   
msoControlboBox  4  
Id是个整数,指定你想要添加的内置控件编号。  
Parameter用来给VB过程发送信息,或者储存关于该控件的信息。  
Before参数是新控件添加在之前的那个控件的索引号,如果忽略,那么VB将在该命令条的结尾处添 
加控件。  
Temporart参数是个逻辑值(True或False),决定控件什么时候被删除。设置该参数为True的话,将 
导致应用软件关闭时,该控件将自动被删除。  
1。  在代码窗口里输入过程AddBarAndControls,如下所示:  
     Sub AddBarAndControls( )   
         With ApplicationmandBars。Add(〃Test〃; ; False; True)   
              。Visible = True   
              。Position = msoBarBottom   

                                          236 

… 页面 253…

              With ntrols。Add(msoControlButton)   
                   。Caption = 〃List of Controls〃   
                   。FaceId = 4   
                   。OnAction = 〃ControlList〃   
              End With   
         End With   
     End Sub  
该过程创建了一个名为Test的新工具栏,并将它放在应用软件窗口的底部。接下来,Add方法在其 
上放置一个名为List of Controls的按钮,并用打印机图标以识别。当用户点击该按钮时,之前已 
准备好的过程ControlList就会被执行。  

6。理解和使用控件属性  

放置在工具栏上的控件有许多属性可供你读取或者设置。要知道某个控件是内置的或者自定义的 
话,那么你可以使用属性BuiltIn,如果返回值为True,那么该控件就是内置控件;所有用户定义 
的控件将返回值False。如果Enabled属性的值为True,那么该控件就是活动的,并且可以对鼠标点 
击作出反应。非活动控件的Enabled属性被设置为False了。不用说,所有控件拥有属性Caption, 
可以用来确定或者设置控件标题。  
以mandBarboBox对象为代表的组合类型的控件具有一些特殊的属性,例如DropDownLines, 
DropDownWidth,List,ListCount,ListIndex以及Text。参见表12…4对这些属性的解释。  
表12…4 对象mandBarboBox选取的属性  
属性                  描述  
DropDownLines         返回或者设置当用户点击组合框下拉箭头时,显示的项目数量  
DropDownWidth         返回或者设置组合框控件的宽度,以像素为单位  
List(Index)           返回或者设置由Index指定的列表项目值(列表里的第一个项目索引号为 
                      0)  
ListCount             返回列表清单里总项目数  
ListIndex             返回或者设置清单里选定项  
Text                  返回或者设置出现在组合框控件部分——文字框显示的文本  
  
1。  在代码窗口输入过程Mybo,如下所示:  
     Sub Mybo()   
         Dim cbo As mandBarControl   
         Set cbo = mandBars(4)ntrols。Add(Type:=4; Before:=1)   
         With cbo   
              。AddItem Text:=〃Row〃; Index:=1   
              。AddItem Text:=〃Column〃; Index:=2   
              。Caption = 〃Insert Row/Column〃   
              。DropDownLines = 2   
              。DropDownWidth = 80   
         End With   
     End Sub  
过程Mybo创建了一个组合框(Type:=4表明msoControlboBox)并将其放置在内置“格式”工 
具栏(该工具栏是mandBars集合里的第四个mandBar对象)的最前面。接下来,有两个项目 
被添加到组合框控件。该过程也设置了组合框标题以及组合框控件宽度。  
2。  切换到Excel窗口检查格式工具栏里的第一个控件  
3。  返回到VB编辑器窗口  
4。  在立即窗口里输入下述语句,从格式工具栏里删除由Mybo过程创建的组合框控件:  
    mandBars(4)ntrols(1)。Delete   
    当你按下回车键后,VB就将格式工具栏里的第一个控件删除了。  
由于有放置在其上的图像,这些出现在工具栏上的按钮都很好辨认。如果工具栏上的控件是个 

                                          237 

… 页面 254…

mandBarButton对象,属性FaceId将返回或者设置按钮上图标的ID编号。大多数情况下, 图标 
的ID编号和控件的ID属性是相同的。使用CopyFace方法可以将图标图片复制到Windows的剪切板上。  
接下来的过程Images将出现在标准工具栏上的按钮列出到电子表格上。除了按钮名称,该清单同时 
也显示它的图标。因为不能复制当前禁用的图标图像(参见标准工具栏上的“撤销”和“恢复”按 
钮),所以当VB试图复制按钮的图标至剪切版时,就会遇到错误。过程Images利用On Error GoTo  
ErrorHandler语句捕获该错误。 这样一来,当VB遇到错误时,就会跳到ErrorHandler:标志并且执 
行该标志下面的指令。最后一条语句Resume Next会让VB回到刚才导致该错误的下面一条语句,并 
且该过程会继续直到标准工具栏上所有的按钮都被检查一遍了。你将在下一章学习更多有关错误捕 
捉的知识。  

                                                                       
图12…3 标准工具栏上图标列表。你可以修改过程Images来列出任何工具栏上的完整按钮和它们的 
图标。  
Sub Images()   
     Dim i As Integer   
     Dim total As Integer   
     Dim buttonId As Integer   
     Dim buttonName As String   
     Dim myControl As mandBarControl   
     Dim bar As mandBar   
     On Error GoTo ErrorHandler   
     Workbooks。Add   
     Range(〃A1〃)。Select   
     With ActiveCell   
         。Value = 〃Image〃   
         。Offset(0; 1) = 〃Index〃   
         。Offset(0; 2) = 〃Name〃   
         。Offset(0; 3) = 〃FaceId〃   
     End With   
     Set bar = mandBars(3)   
     total = barntrolsunt   
     With bar   
         For i = 1 To total   

                                          238 

… 页面 255…

              buttonName = ntrols(i)。Caption   
              buttonId = ntrols(i)。ID   
              Set myControl = mandBars。FindControl(ID:=buttonId)   
              myControlpyFace   
              ' error could occur here   
              ActiveCell。Offset(1; 0)。Select   
              ActiveSheet。Paste   
              With ActiveCell   
                   。Offset(0; 1)。Value = buttonId   
                   。Offset(0; 2)。Value = buttonName   
                   。Offset(0; 3)。Value = myControl。FaceId   
              End With   
         Next i   
         Columns(〃C:C〃)。EntireColumn。AutoFit   
         Exit Sub   
ErrorHandler:   
         Set myControl = mandBars(3)ntrols。Add   
         With myControl   
              。FaceId = buttonId   
              pyFace   
              。Delete (False)   
         End With   
         Resume Next   
     End With   
End Sub   

7。控件方法  

控件拥有很多相关的方法,这些方法允许你进行一些操作,例如移动、复制和删除控件。假设你想 
复制格式工具栏上的“粗体”按钮到标准工具栏上:  
1。  在立即窗口里输入下述三条语句:  
    set myBar = mandBars(3)   
    set myCont
返回目录 上一页 下一页 回到顶部 1 2
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!