- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法填充下拉/列表框。
原始代码来自:
https://exceloffthegrid.com/inserting-a-dynamic-drop-down-in-ribbon/
How to add a custom Ribbon tab using VBA?
下面的 VBA 代码在一个模块中,XML 代码在第二个模块中。工作簿打开时会创建功能区。
我的代码:
VBA:
Option Explicit
'testRibbon is a variable which contains the Ribbon
Public testRibbon As IRibbonUI
Sub testRibbon_onLoad(ByVal ribbon As Office.IRibbonUI)
Set testRibbon = ribbon
End Sub
Public Sub DropDown_getItemCount(control As IRibbonControl, ByRef returnedVal)
Dim Workbook As Workbook
Dim Worksheet As Worksheet
Dim myCell As Range
Dim LastColumn As Long
Set logBook = Workbooks("Journal.xlsm")
Set dataSheet = logBook.Worksheets("Data Sheet")
Set myCell = dataSheet.Range("B3")
ColumnNumber = myCell.End(xlToRight).Column
'Convert To Column Letter
ColumnLetter = Split(Cells(1, ColumnNumber).Address, "$")(1)
Set myCell = dataSheet.Range("B3:" & ColumnLetter & "3")
returnedVal = 0
For x = 1 To myCell.Columns.Count
card1 = myCell.Cells(1, x).Value
If card1 <> "" And Len(card1 & vbNullString) > 0 Then
returnedVal = returnedVal + 1
End If
Next x
End Sub
Public Sub DropDown_getItemID(control As IRibbonControl, index As Integer, ByRef id)
id = "Base Currency: " & index
End Sub
Public Sub DropDown_getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
Dim Workbook As Workbook
Dim Worksheet As Worksheet
Dim myCell As Range
Set logBook = Workbooks("Journal.xlsm")
Set dataSheet = logBook.Worksheets("Data Sheet")
Set myCell = dataSheet.Range("B3")
returnedVal = myCell.Value
End Sub
Public Sub DropDown_getSelectedItemID(control As IRibbonControl, ByRef id)
id = "--SELECT--"
End Sub
Sub updateRibbon()
testRibbon.Invalidate
End Sub
XML:
Sub LoadCustRibbon()
Dim hFile As Long
Dim path As String, fileName As String, ribbonXML As String, user As String
hFile = FreeFile
user = Environ("Username")
path = "C:\Users\" & user & "\AppData\Local\Microsoft\Office\"
fileName = "Excel.officeUI"
ribbonXML = " <mso:customUI xmlns:mso='http://schemas.microsoft.com/office/2009/07/customui'>" & vbNewLine
ribbonXML = ribbonXML + " <mso:ribbon>" & vbNewLine
ribbonXML = ribbonXML + " <mso:qat/>" & vbNewLine
ribbonXML = ribbonXML + " <mso:tabs>" & vbNewLine
'Group 1
ribbonXML = ribbonXML + " <mso:tab id='myTab' label='Tab1' insertBeforeQ='mso:TabFormat'>" & vbNewLine
ribbonXML = ribbonXML + " <mso:group id='sendSubmit' label='Submit' autoScale='true'>" & vbNewLine
'Drop Down
ribbonXML = ribbonXML + " <mso:dropDown id='DropDown' label='myList' " & vbNewLine
ribbonXML = ribbonXML + " onAction='DropDown_onAction' " & vbNewLine
ribbonXML = ribbonXML + " getSelectedItemID='DropDown_getSelectedItemID' " & vbNewLine
ribbonXML = ribbonXML + " getItemLabel='DropDown_getItemLabel' " & vbNewLine
ribbonXML = ribbonXML + " getItemID='DropDown_getItemID' " & vbNewLine
ribbonXML = ribbonXML + " getItemCount='DropDown_getItemCount'" & vbNewLine
ribbonXML = ribbonXML + " />" & vbNewLine
ribbonXML = ribbonXML + " </mso:group>" & vbNewLine
ribbonXML = ribbonXML + " </mso:tab>" & vbNewLine
ribbonXML = ribbonXML + " </mso:tabs>" & vbNewLine
ribbonXML = ribbonXML + " </mso:ribbon>" & vbNewLine
ribbonXML = ribbonXML + " </mso:customUI>"
ribbonXML = Replace(ribbonXML, """", "")
Open path & fileName For Output Access Write As hFile
Print #hFile, ribbonXML
Close hFile
End Sub
我已经完全按照教程中的代码复制了代码,但我就是无法填充下拉框 - 即使我按照他们在工作簿中的工作表中建议的那样进行操作也是如此。
希望有人能帮忙,这让我发疯。 :/
最佳答案
设法找到了一个教程,解释了我试图实现的目标的正确用法。
链接:
https://www.contextures.com/excelribbonmacrostab.html
链接中信息的重点:
2010 及更高版本的 XML 代码示例:
代码:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="myLogTab" label="Logbook">
<group id="setup" label="Setup">
<button
id="btnSubmit"
label="Submit"
imageMso="GoTo"
size="large"
onAction="Submit"
/>
<dropDown
id="ddlBase"
label="Base"
getItemCount="DropDown_getItemCount"
getItemLabel="DropDown_getItemLabel"
getSelectedItemIndex="GetSelItemIndex"
onAction="DropDown_onAction"
/>
<editBox
id="txtEntry"
label="Entry"
getText="MyEditBoxCallbackgetText"
onChange="MyEditBoxCallbackOnChange"
/>
</group>
<group id="logSummary" label="Summary">
<labelControl
id="lblTotal"
label="Total"
/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
VBA 示例:
代码:
Option Explicit
'https://www.contextures.com/excelribbondynamictab.html
Public myRibbon As IRibbonUI
Sub Onload(ribbon As IRibbonUI)
'Create a ribbon instance for use in this project
Set myRibbon = ribbon
End Sub
'Callback for ddlBase getItemCount
Sub DropDown_getItemCount(control As IRibbonControl, ByRef count)
End Sub
'Callback for ddlBase getItemLabel
Sub DropDown_getItemLabel(control As IRibbonControl, Index As Integer, ByRef label)
End Sub
'Callback for ddlBase getSelectedItemIndex
Sub GetSelItemIndex(control As IRibbonControl, ByRef Index)
End Sub
'Callback for ddlBase onAction
Sub DropDown_onAction(control As IRibbonControl, id As String, Index As Integer)
End Sub
'Callback for txtEntry getText
Sub MyEditBoxCallbackgetText(control As IRibbonControl, ByRef returnedVal)
End Sub
'Callback for txtEntry onChange
Sub MyEditBoxCallbackOnChange(control As IRibbonControl, text As String)
End Sub
关于excel - VBA - 填充自定义功能区下拉/列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57146927/
如何在 WPF 的功能区中隐藏快速访问工具栏? 最佳答案 对于 Microsoft Ribbon for WPF ,您可以使用 VisualTreeHelper 隐藏它.关于 Loaded事件处理程序
我尝试做一个功能区工具栏。我的问题是它没有找到 ImageSource。这是我的简单代码:
如何尽可能快速、简单地添加自定义宏 XLAM 文件? 我有一个保存为 XLAM 文件的宏。我希望我工作的其他不懂 Excel 的人员能够下载 XLAM 文件,像使用任何其他加载项(例如 Solver)
我在带有 EditBox 的 excel 功能区上有一个自定义选项卡。用户应在 EditBox 中输入 100 到 200 之间的数字。如果用户输入除此之外的任何内容,则应弹出错误消息,并且 Edit
我想在 ggplot2 中绘制一个图 多行, 每个都有一个环绕的丝带, 用户指定颜色, 并带有显示线条颜色和色带颜色的图例。 (向下滚动以查看几乎实现我所寻求的情节的示例。) 我看过相关的问题,但没有
.xlsm > customUI > customUI.xml 当我为下面的菜单元素使用 size="large"时,我看到带有大图标的按钮。 但是当我将属性 size="large"的按钮放在菜单
我正在开发 PowerPoint 加载项,并希望在加载项应用程序运行时暂时禁用某些功能区控件。 我开发了一个解决方案,可以在启用加载项时按预期工作,但这还不够,因为它禁用了一些常用的控件,如 Slid
如何为 Excel 功能区中的每个组合框项目设置 ID? 下面的代码是我为每个项目设置文本(标签)的地方,我想为每个项目设置一个 ID,以便以后识别它。我怎样才能做到这一点? Private Sub
我有一个应用程序,我是第一次在其中使用功能区。我可以填充自己的控件并使子例程的回调没有问题。我现在正处于开发阶段,我希望动态隐藏/显示一些组以提供更好的用户体验。 我可以通过更改 CallbackGe
我正在为 Office(2007 年和 2010 年)编写一个插件,到目前为止,我已经使用 Fluent Ribbon XML 来自定义不同的功能区。 我现在使用这种方法时遇到的问题是,我想在我的代码
我刚开始玩 Microsoft 的 08/2010 WPF Ribbon发布。基础知识看起来非常简单,但我如何创建一个 RibbonToggleButton 组,一次只允许选择组中的一个按钮,类似于单
我引用CSS3-Tricks Ribbon tutorial的教程. 我想用 CSS3 调整表格内的第 th 元素,使其看起来像教程中的功能区。 我设置了一个 JSFiddle测试它,但不幸的是我做不
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a mi
我正在设计一个网站,该网站的左上角悬挂着一条 CSS 丝带。当我将图像放在色带下方时,色带会与图像重叠,这就是我想要的外观。 但是,当我实现 J-Query 幻灯片放映技术时,会发生以下情况。 我的问
我试图在 Div 的右上角放置一个“三 Angular 形”。不知何故,我每次都搞砸了。 That's the Fiddle 那是我的 div: Test Module
我是 VSTO 的新手,我正在尝试创建一个带有一些简单控件的 Excel 功能区。我知道在 Visual Studio 中有两种方法可以做到这一点。功能区 XML 和功能区设计器,据我所知,大多数人更
我听说 Microsoft 允许使用商用 Office UI 控件,但竞争产品除外,例如文字处理器或电子表格应用等。 这有多真实? 此外,如果这不是真的,您是否知道任何免费功能区控件? 最佳答案 你应
如何更改 WPF 功能区 ApplicationMenu 中 AuxilaryPane 的大小?我已将最近的文件列表添加到该区域,但它被截断了。理想情况下,我希望辅助 Pane 像 Word/Exce
我正在学习 Micronaut 框架。我的 gradle.build 文件 dependencies { annotationProcessor "io.micronaut:micronaut-inj
我正在考虑在我的一个应用程序中实现功能区 GUI,当然希望遵守 MS 指南,因此感觉就像一个普通的功能区,等等。但我正在尝试找出解决特定问题的方法动态改变功能区。 我正在创建一个概念游戏编辑器,请不要
我是一名优秀的程序员,十分优秀!