• 网站地图|收藏本站|数学学习|学习方法|电脑学习|教学大全|生活常识|句子大全|管理资料下载|范文大全
  • Excel 2007中制作动态菜单

    时间:10-14 10:27:50来源:http://www.laixuea.com 办公软件教程阅读:8243

    概要:创建一个动态菜单控件不是一项简单的工作,但在使用VBA动态修改Ribbon方面,该控件可能提供最大的灵活性。这里,创建了一个简单的动态菜单控件演示,为Excel2007工作簿中的三个工作表中的每一个显示不同的菜单。激活工作表sheet1时出现的菜单。当激活一个工作表时,VBA过程发送为工作表指定的XML代码。在本示例中,直接存储XML代码在工作表里,使之更易阅读。此外,XML标志可以作为字符串变量存储在代码中。创建新选项卡、新组和动态菜单控件的RibbonX代码如下:以下是代码片段: 《customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“ onLoad=”ribbonLoaded”》 《ribbon》 《tabs》 《tab id=”CustomTab” label=”Dynamic”》 《group id=”group1″ label=”Dynamic Menu Demo”》 《dynamicMenu id=”Dyn

    Excel 2007中制作动态菜单,标签:办公软件学习,office办公软件教程,http://www.laixuea.com

      创建一个动态菜单控件不是一项简单的工作,但在使用VBA动态修改Ribbon方面,该控件可能提供最大的灵活性。

      这里,创建了一个简单的动态菜单控件演示,为Excel2007工作簿中的三个工作表中的每一个显示不同的菜单。激活工作表sheet1时出现的菜单。当激活一个工作表时,VBA过程发送为工作表指定的XML代码。在本示例中,直接存储XML代码在工作表里,使之更易阅读。此外,XML标志可以作为字符串变量存储在代码中。

      创建新选项卡、新组和动态菜单控件的RibbonX代码如下:

    以下是代码片段:
       《customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“
      onLoad=”ribbonLoaded”》
      《ribbon》
      《tabs》
      《tab id=”CustomTab” label=”Dynamic”》
      《group id=”group1″ label=”Dynamic Menu Demo”》
      《dynamicMenu id=”DynamicMenu”
      getContent=”dynamicMenuContent”
      imageMso=”RegionLayoutMenu”
      size = “large”
      label=”Sheet-Specific Menu”/》
      《/group》
      《/tab》
      《/tabs》
      《/ribbon》
      《/customUI》

      本示例需要无论何时用户激活新工作表时,都使Ribbon无效的一种方式。这里使用了先前显示分页符的示例相同的方法。声明了一个IRibbonUI类型的Public变量MyRibbon,无论何时激活一个新工作表,都将在Workbook_SheetActivate过程中调用UpdateDynamicRibbon过程:

    以下是代码片段:
        Sub UpdateDynamicRibbon()
      ‘ Invalidate the Ribbon to force a call to dynamicMenuContent
      On Error Resume Next
      MyRibbon.Invalidate
      If Err.Number 《》 0 Then
      MsgBox “Lost the Ribbon object. Save and reload.”
      End If
      End Sub

      UpdateDynamicRibbon过程使MyRibbon对象无效,强制对名为dynamicMenuContent(一个通过RibbonX代码里getContent参数引用的过程)的VBA回调过程的调用。注意错误处理代码。一些对VBA代码的编辑销毁了MyRibbon对象,而该对象是在打开工作簿时创建的。试图使不存在的对象无效将会导致错误,消息框将通知用户必须保存工作簿后再重新打开。而重新打开该工作簿是重新创建MyRibbon对象的唯一方式。

      dynamicMenuContent过程的代码如下。该过程遍历活动工作表A列中的单元格,读取XML代码,将其保存在名为XMLcode的变量中。当附加了所有的XML后,传递给returnedVal参数,使动态菜单控件有新的代码,因此显示一组不同的菜单选项。

    以下是代码片段:
        Sub dynamicMenuContent(control As IRibbonControl, _
      ByRef returnedVal)
      Dim r As Long
      Dim XMLcode As String
      ‘ Read the XML markup from the active sheet
      For r = 1 To Application.CountA(Range(”A:A”))
      XMLcode = XMLcode & ActiveSheet.Cells(r, 1) & ” “
      Next r
      returnedVal = XMLcode
      End Sub
    Tag:办公软件教程办公软件学习,office办公软件教程电脑学习 - 办公软件教程