| 网站首页 | 资讯 | 技术中心 | 下载 | 图片 | 影视一区 | 影视二区 | 影视三区 | 迅雷电影 | 电视 | 电子书 | 论文 | 电脑之家影院 | 
您现在的位置: 电脑之家 DNZJ.NET >> 技术中心 >> 使用技巧 >> EXCEL应用 >> 文章正文
  如何在Excel2007中制作动态菜单        【字体:
如何在Excel2007中制作动态菜单
作者:网虫    文章来源:网络    点击数:    更新时间:2008-10-13    
在Excel2007中最有趣的Ribbon控件之一是动态菜单控件。该控件使用VBA代码将XML数据放到控件中——提供了基于内容改变的菜单的基础。

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

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

  如何在Excel2007中制作动态菜单

  图1:动态菜单近件使得可以取决于内容来创建变化的菜单

  创建新选项卡、新组和动态菜单控件的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

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    在Excel2007中使用Web数据源
    在Excel2007中快速检索大量数
    如何点亮QQ 2008 beta 2 WAP
    如何优先打印
    如何组建双通道内存
    如何刷新显卡BIOS
    如何选购cpu风扇
    如何用好集成声卡
    如何识别cpu芯片
    如何开启SATA硬盘的NCQ功能
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    您好!我是网虫,欢迎来到电脑之家做客,愿您在这里与知音相遇。建议使用 IE 6.0 以上,1024*768 分辨率全屏观看。
    设为首页加入收藏联系站长友情链接版权申明后台管理
    备案编号:鲁ICP备07010766号