VBA,请教几个问题。
②Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton)添加按键如何获取它上一级的msoBarPopup键名?
③(最关键的)Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton)只能通过指定宏激发预订程序吗?是否存在类宏?
④CommandBars中的msoControlButton键和msoBarPopup该如何遍历名?
羞愧不敢漏名 展开
2018-01-20 · 知道合伙人软件行家
试解答如下,供参考:
在 office 的 vba 中,CommandBars 对象提供了命令栏的 CommandBar 对象的集合,对于新版本的 office (2007以后),CommandBar 已被新的“功能区”用户界面取代。
①Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton)中的"cell"有什么意义?
CommandBars 是 CommandBar 的集合(即有多个命令栏),CommandBars("Cell") 用于指定访问的是名称为 cell 的命令栏。
cell 的意义在于指定操作的目标命令栏,即向名为“Cell”的命令栏添加按钮。
②Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton)添加按键如何获取它上一级的msoBarPopup键名?
从对象层次来看,ControButton -> Controls -> CommandBar -> CommandBars。
③(最关键)Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton)只能通过指定宏激发预订程序吗?是否存在类宏?
Add 方法,其语法如下:
其中 Type (控件类型)可以取以下值:
msoControlButton、msoControlEdit、msoControlDropdown、msoControlComboBox 或 msoControlPopup
当添加一个 ControlButton 后,可以通过以下属性来设置点击按钮的响应代码:
示例代码:
Set myBar = CommandBars("Custom")
Set myControl = myBar.Controls _
.Add(Type:=msocontrolButton)
With myControl
.FaceId = 2
.OnAction = "!<FinanceAddIn>"
End With
myBar.Visible = True
④CommandBars中的msoControlButton键和msoBarPopup该如何遍历名?
因为存在多层对象,以下代码示例供参考:
遍历 CommandBars 集合 :
遍历“常规”命令栏中 msoControlButton 键和 msoBarPopup:
Private Sub CommandButton1_Click()
For Each ctl In CommandBars("Standard").Controls
If ctl.Type = msoControlButton Then
Debug.Print "按钮:", ctl.Caption
ElseIf ctl.Type = msoBarPopup Then
Debug.Print "弹出菜单:", ctl.Caption
End If
Next
End Sub
运行截图:
msoControlButton键只能通过onaction属性来设置响应吗?我想设置的键有很多,他们的语句内容基本一样,不想全部一个一个些
写