我知道这可能很简单,但我花了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
右键单击电子表格时,自定义菜单会完美显示。我无法弄清楚如何捕获我选择的菜单项。有人可以指出我可以使用VBA代码来捕获和使用选择吗?
提前致谢 -
答案 0 :(得分:0)
更多谷歌搜索后,我在OCW11电子表格控件的帮助中找到了这个问题的答案。 BeforeContextMenu事件列出了我原始帖子中显示的代码。我可以看到菜单项是用以下语句定义的:
force.length = (this.gravity * pa.mass * pb.mass) / dist;
“Cu& t”是菜单项标签,“owc2”是应该执行Cut命令的常量(我假设)(命令在OWC11中称为“OCCommands”)。问题是“owc2”常量没有触发Cut命令。我在OCCommand ID常量的标题为“OCCommandID”的条目中检查了帮助的“编程信息”部分,下面的“Enumerations”,。这正是他们所在的位置。我查看了Cut常量,即1001,并用1001替换了“owc2”,Cut命令完美无缺!我对“& Copy”和“& Paste”命令做了同样的事情,分别是1002和1003,它们也有效。
我的问题可能是我没有设置对OWC常量的正确引用。或者可能是常量已更改,并且未在帮助文档中正确更新。无论哪个可能是罪魁祸首,上述方法都解决了这个问题。