《excel_vba_编程教程(完整版)》

下载本书

添加书签

excel_vba_编程教程(完整版)- 第77节


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
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 myControl = mandBars(4)ntrols(3)   
    myControlpy Bar:=myBar; Before:=1   
2。  切换到Excel应用程序窗口,你应该能看到标准工具栏“新建”按钮的左边有了“粗体”按钮。  
3。  切换到VB编辑器屏幕,并在立即窗口里输入下述语句从标准工具栏上删除该粗体按钮:  
    mandBars(3)ntrols(1)。Delete   
将Copy方法改成Move方法的话,你就可以将粗体按钮从格式工具栏移动到标准工具栏,你可以自己 
试验一下。使用方法Reset,你可以将工具栏恢复为缺省设置。当你练习完移动和复制按钮后,请 
在立即窗口里输入下述语句:  
mandBars(3)。Reset   
mandBars(4)。Reset  
如果某个控件是个组合框(mandBarboBox)的话,那么你就可以使用AddItem方法给它的下 
拉清单添加新项目。如果要从该清单删除项目的话,就可以使用RemoveItem方法。我们花上几分钟 
来在立即窗口里练习这些方法吧。  
1。  激活你之前准备的过程Mybo,运行该过程在格式工具栏上放置一个自定义组合框控件  
2。  在立即窗口里输入下述语句:  
    set myBar = mandBars(4)   
    set myControl = mandBars(4)ntrols(1)   
    myControl。RemoveItem(1)   
    myControl。AddItem 〃Cells〃; 1   

                                          239 

… 页面 256…

3。  切换到Excel窗口,并且查看格式工具栏上该自定义组合框控件里可用的项目  
4。  返回到VB编辑器窗口,在立即窗口里面输入下述语句并且回车,以重新设定格式工具栏:  
    mandBars(4)。Reset   

8。使用菜单  

就像工具栏一样,菜单也是mandBar对象。有两类菜单:内置菜单和快捷菜单。内置菜单出现在 
应用程序窗口的顶端,紧接着在标题栏之下。在Excel 2002里,有两种内置菜单:工作表菜单和图 
表菜单。  
如果当前活动的是工作表时,那么出现的就是工作表菜单(见图12…4),并列出 几个主要的菜单。 
每个主菜单组都和某些特定的任务相关联,可以在工作表或者工作簿上执行。例如,格式菜单包含 
各种选项允许将各种各样的格式应用到工作表。有些菜单选项组合了一些更详细的选项在子菜单里 
 (见图12…5)  

                                                                                            
图12…4 Excel应用软件的工作表菜单栏  

                                                                                         
图12…5 选择右边带三角的菜单选项将展开一个带有更多选项的子菜单  
当用户正在使用图表页或者选择了内嵌于工作表里的图表时,工作表菜单栏就会被图表菜单栏取代 
 (见图12…6)。同一时间应用程序窗口上只能显示一个菜单栏。  

                                                                                                
图12…6 Excel内置的图表菜单栏  
当你在某个对象上单击右键或者按下Shift+F10时,就会出现快捷菜单。Excel 2002 有50个以上的 
快捷菜单。快捷菜单包含一些经常使用的命令,例如,当你在工作表的任何单元格单击右键时,单 
元格快捷菜单就会出现(见图12…7)。当你在工作表标签上单击右键时,就会出现工作表标签的标 
准菜单(见12…8)。  

                                          240 

… 页面 257…

                             
图12…7 当右键单击任何单元格时出现该快捷菜单   

                             
图12…8 当右键单击工作表标签时出现该快捷菜单   
菜单栏和工具栏一样,用同样的对象mandBar代表。使用对象Control指向菜单,菜单选项,子 
菜单或快捷菜单。Control对象的类型由适当的常量决定。使用msoControlPopup指向菜单, 
msoControlButton常量指向菜单选项,而msoBarPopup常量则指向快捷菜单。你将在下一章节里学 
习如何使用这些常量。  

9。菜单编程  

使用VBA,你可以进行一些操作,例如创建新菜单栏,添加新菜单到内置菜单栏,激活内置或者自 
定义菜单栏,删除用户定义菜单栏,重设内置菜单,判断某个菜单栏时内置的或者自定义的,等等。  
1。  在立即窗口里输入下述语句,返回当前活动菜单栏地名称:  
    ?mandBars。ActiveMenuBar。Name   
    当你按下回车,VB就会返回活动菜单栏的名称:工作表菜单栏。  
    菜单栏上的每个菜单都有一个标题,可以通过属性Caption和Id返回或者设置。  
2。  在本章的模块里面输入下述过程,来返回内置菜单栏上格式菜单的ID:  
     Sub Return_ID()   
          Dim myControl As Object   
          Set myControl = mandBars(〃Worksheet menu bar〃)ntrols(〃Format〃)   
          Debug。Print myControl。Caption & 〃 Id is 〃 & myControl。Id   
     End Sub   
     如果你想让上面的过程更灵活一些的话,可以按照下述Set语句,让用户可以返回工作表菜单 
栏上其它菜单的ID:  
     Set myControl = mandBars(〃Worksheet menu bar〃)ntrols (InputBox(〃Enter the menu 
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架