Excel 2007 - 捕获 OWC11 电子表格控件的右键单击上下文菜单选择

Excel 2007 - Capture OWC11 Spreadsheet Control's Right-Click Context Menu Selection

我知道这可能很简单,但我花了 2 个小时在谷歌上搜索答案,但我找不到。我在 Excel 2007 用户窗体上使用 Office Web Components 2003 (v11) 电子表格控件。我正在使用 BeforeContextMenu 事件创建自定义上下文(右键单击)菜单。我正在使用电子表格控件的帮助文件中的代码示例来创建菜单。代码是:

Sub Spreadsheet1_BeforeContextMenu(x, y, Menu, Cancel)

    Dim cmContextMenu(4)
    Dim cmClearSubMenu(2)

    cmClearSubMenu(0) = Array("&All", "ClearAll")
    cmClearSubMenu(1) = Array("&Formats", "ClearFormats")
    cmClearSubMenu(2) = Array("&Values", "ClearValues")

    cmContextMenu(0) = Array("Cu&t", "owc2")
    cmContextMenu(1) = Array("&Copy", "owc3")
    cmContextMenu(2) = Array("&Paste", "owc4")
    cmContextMenu(3) = Empty
    cmContextMenu(4) = Array("Clea&r", cmClearSubMenu)

    Menu.Value = cmContextMenu

End Sub

右键单击电子表格时,自定义菜单会完美显示。我想不通的是如何捕获我 select 的菜单项。有人可以指点我 VBA 代码,使我能够捕获和使用 select 离子吗?

提前致谢 -

经过更多的谷歌搜索,我在 OCW11 电子表格控件的帮助中找到了这个问题的答案。 BeforeContextMenu 事件列出了我原来 post 中显示的代码。我可以看到菜单项是用如下语句定义的:

cmContextMenu(0) = Array("Cu&t", "owc2")

"Cu&t" 是菜单项标签,"owc2" 是应该执行 Cut 命令的常量(我假设)(命令在中称为 "OCCommands" OWC11).问题是 "owc2" 常量没有触发 Cut 命令。我检查了帮助的 "Programming Information" 部分, 在标题为 "OCCommandID" 的条目中 "Enumerations," 下的 OCCommand ID 常量。那正是他们所在的地方。我查找了 Cut 常量,即 1001,并将 "owc2" 替换为 1001,Cut 命令完美运行!我对“&Copy”和“&Paste”命令做了同样的事情,分别使用 1002 和 1003,它们也能正常工作。

我的问题可能是我没有设置对 OWC 常量的正确引用。或者可能是帮助文档中的常量已更改且未正确更新。无论哪个可能是罪魁祸首,上述方法都解决了问题。