取消激活Excel中鼠标右键单击时的某些选项

yshpjwxd  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(152)

我正试图在Excel中单击鼠标右键时停用某些选项。
其中很多都可以工作,但“新注解”,“新注解”和“格式化单元格......”不符合格式:Application.CommandBars("cell").Controls("New Comment").Enabled = False
我正在寻找获取这些命令的语法,但也有一种方法可以使用控件ID(我认为,对于“New Comment”,是ID01589)来做同样的事情。找到很多这些右键单击选项的ID似乎比使用标签更容易。
除了找到语法为上述三个项目的右键单击菜单我想知道如何做到这一点的项目在其他菜单即。教我如何钓鱼,而不是给我一条鱼。

c7rzv4ha

c7rzv4ha1#

我在这里的知识来自于多年来对许多项目的反复试验和错误。因此,我并不主张有确切的知识。然而,这个过程,如果遵循,将得到你的鱼,我会教你如何捕鱼,因为我知道它最好的!
有两个单独的方法需要这个...“菜单项”不是以相同的方式添加的。我相信微软在引入“ribbon”和RibbonX时改变了他们的添加方式。首先,格式化单元格,这是添加的'老办法':
要获取“单元格”菜单上的菜单项(CommandBarControls)的ID,您可以使用以下命令:

  1. Sub ListCommandBarControlsForCellMenu()
  2. Dim cb As CommandBar, cbc As commandBarControl
  3. Set cb = Application.CommandBars("Cell")
  4. For Each cbc In cb.Controls
  5. Debug.Print Now, cbc.ID, "'" & cbc.Caption & "'"
  6. Next cbc
  7. End Sub

从这里你会看到“格式化单元格”的ID是855,所以你可以使用Application.CommandBars("Cell").FindControl(ID:=855, Recursive:=True).Enabled = False禁用它(当然,True可以启用它)。
接下来,添加“新方式”的新注解和新注解:
这些都是使用RibbonX添加的,你将需要一个RibbonX编辑器应用程序来帮助你编辑它...有几个RibbonX编辑器在那里,我建议Office RibbonX Editor(我与作者没有联系),你需要阅读如何使用它。一旦你掌握了如何添加/编辑RibbonX的窍门,你需要知道New Comment的idMsoNewThreadedComment,New Note的idMsoNewCommentLegacy,所以你需要的RibbonX代码是:

  1. <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  2. <contextMenus>
  3. <contextMenu idMso="ContextMenuCell">
  4. <button idMso="NewCommentLegacy"
  5. enabled="false" />
  6. <button idMso="NewThreadedComment"
  7. enabled="false" />
  8. </contextMenu>
  9. </contextMenus>
  10. </customUI>

计算idMso值的过程并不简单。然而,我在这里使用的方法(以及以前使用的方法)。有时成功,有时不成功)是:在Excel中,转到:文件>选项>自定义功能区,在“选择命令自”下选择“所有命令”.在这一点上,然后,你必须工作,在(很长)下拉菜单中的命令涉及到你想要的'菜单项'。
在您的情况下,滚动到插入注解(在我的设备上有两个,它是第一个),并将鼠标悬停在它上面,您将在工具提示的末尾看到括号中的NewThreadedComment。这是新注解的idMso(为什么微软在一个地方使用插入注解,在另一个地方使用新注解,我不知道.这是“乐趣和游戏”的一部分,微软称之为每一个项目,没有明确的方法来做到这一点,我知道,你需要在下拉菜单中寻找,直到你找到你需要的命令);然后滚动到新笔记,再次悬停鼠标找到idMsoNewCommentLegacy。然后在RibbonX中使用它们,如上所述,以禁用相关的菜单项。
要了解更多关于RibbonX的信息,包括如何使用getEnabled动态禁用/启用(如果您需要的话),请参阅Microsoft docs

展开查看全部
2ledvvac

2ledvvac2#

对于大多数单元格控件,我建议枚举单元格菜单项id和返回控件的函数。
请注意,这些控件是隐藏的,无法取消隐藏:

  1. cmInsertComment = 2031
  1. cmDeleteComment = 1592
  2. cmShowHideComments = 1593

正如JohnM指出的,你需要编辑功能区来禁用菜单项。我使用Custom UI Editor插入xml来禁用新注解和新注解菜单项。

  1. <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  2. <commands>
  3. <command idMso="NewThreadedComment" enabled="false"/>
  4. <command idMso="NewCommentLegacy" enabled="false"/>
  5. </commands>
  6. </customUI>
  7. Public Enum CellMenuControlID
  8. cmCut = 21
  9. cmCopy = 19
  10. cmPaste = 22
  11. cmPasteSpecial = 21437
  12. cmPasteTable = 3624
  13. cmSmartLookup = 25536
  14. cmPictureInCell = 34738
  15. cmShowDataTypeCard = 32714
  16. cmDataType = 32713
  17. cmViewAltText = 34737
  18. cmInsert = 3181
  19. cmDelete = 292
  20. cmClearContents = 3125
  21. cmTranslate = 33409
  22. cmQuickAnalysis = 24508
  23. cmSparklines = 31623
  24. cmFilter = 31402
  25. cmOutputAs = 34750
  26. cmSort = 31435
  27. cmGetDataFromTableRange = 34003
  28. cmInsertComment = 2031
  29. cmDeleteComment = 1592
  30. cmShowHideComments = 1593
  31. cmFormatCells = 855
  32. cmPickFromDropdownList = 1966
  33. cmShowPhoneticField = 1614
  34. cmDefineName = 13380
  35. cmOpenWith = 34600
  36. cmSetOpenDefault = 34680
  37. cmHyperlink = 1576
  38. cmEditHyperlink = 1577
  39. cmOpenHyperlink = 1015
  40. cmRemoveHyperlink = 3626
  41. cmLinkToThisRange = 34646
  42. cmShowChanges = 34405
  43. cmShowDiagnostics = 34713
  44. cmExpandToDetail = 11299
  45. cmAdditionalActions = 31595
  46. cmFullScreen = 178
  47. cmHideOthers = 34125
  48. cmAdditionalActions2 = 22577
  49. cmPeopleNearMe = 34042
  50. cmShowVBEditor = 1
  51. End Enum
  52. Function getCellMenuControl(Id As CellMenuControlID) As CommandBarControl
  53. Set getCellMenuControl = Application.CommandBars("Cell").FindControl(Id:=Id)
  54. End Function
展开查看全部

相关问题