首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表上Excel VBA Buttonbar

表上Excel VBA Buttonbar
EN

Stack Overflow用户
提问于 2022-06-03 22:42:14
回答 1查看 95关注 0票数 3

当我看到ActivX控件: ButtonBar类时,我正在试图找到一个ActivX解决方案来添加到excel中的工作表(所以不是表单,直接放在工作表上),该控件被添加到下面的代码中。

有人能告诉我如何在这个控件中添加按钮吗?

或者你知道我可以用在Exel工作表上的其他按钮类型控件吗?

代码语言:javascript
复制
    ActiveSheet.OLEObjects.Add(ClassType:="UmOutlookAddin.ButtonBar.1", Link:= _
        False, DisplayAsIcon:=False, Left:=96.75, Top:=15, Width:=214.5, _
        Height:=17.25).Select

您可以控制单击,取消下面的代码,但我还没有找到添加新按钮的方法:

代码语言:javascript
复制
Private Sub ButtonBar1_OnClick(ByVal ButtonId As Long)
EN

回答 1

Stack Overflow用户

发布于 2022-07-15 15:50:18

我不认为你能加扣子。我试着更改标签,结果导致Excel崩溃:

代码语言:javascript
复制
Sub Test()
    Dim bb As ButtonBar
    
    Set bb = ActiveSheet.OLEObjects(1).Object
    bb.SetButtonLabel PlayButtonId, "Test" 'Boom
End Sub

ButtonBar看起来太不稳定了,我不建议使用它。

然而,你还有其他的选择。例如,在Developer选项卡上有一个简单的Button控件:

您可以添加多个按钮,然后将它们分组:

显然,您可以使它们相邻,以模拟一个酒吧:

正如你所看到的,他们甚至有一个“按下”的动画,当你点击他们(中间按钮)。

如果您不需要动画,那么您可以添加任何形状作为按钮工作。您将添加一个形状并格式化它,然后复制并为每个形状分配一个不同的宏(右击和Assign Macro...)。然后,当它们完成时,您将对它们进行分组。例如:

或者,如果您不一定需要工作表本身中的按钮,可以使用自定义带状选项卡。Here是一个例子,我一步一步地向您展示了如何添加自定义色带,但是如果您搜索web,有很多方法可以实现它。在该示例中,自定义带状不是用于显示任何内容,而是用于它的Init事件。但是,在步骤2f中用以下内容替换xml很容易:

代码语言:javascript
复制
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="InitRibbon"> 
<ribbon>    
<tabs>  
<tab id ="TestTabID" Label="Test">  
    <group id="FirstGroupID" Label="First Group">   
        <button id="RefreshData" label="Refresh Data" size="large" imageMso="Refresh" onAction="RibbonCallTool" />  
        <button id="UnloadData" label="Unload Data" size="large" imageMso="RecordsDeleteRecord" onAction="RibbonCallTool" />    
    </group>
</tab>  
</tabs> 
</ribbon>   
</customUI> 

在这种情况下,您还可以在标准的VBA模块中使用此方法:

代码语言:javascript
复制
'*******************************************************************************
'Callback ("onAction"). Runs when a control is clicked in the Custom Ribbon tab
'*******************************************************************************
Public Sub RibbonCallTool(ByVal ctrl As IRibbonControl)
    Select Case ctrl.ID
    Case "RefreshData"
        MsgBox "Refresh"
    Case "UnloadData"
        MsgBox "Unload"
    Case Else
        Debug.Print "Control <" & ctrl.ID & "> does not have an associated action attached!"
    End Select
End Sub

最后,您始终可以有一个按钮打开一个非模式表单,并提供您所需的所有菜单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72495776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档