如何在自定义下拉功能区控件上设置所选项目

2023-11-29

我正在使用自定义 UI 编辑器为 Excel 创建一个自定义选项卡,其中有两个 DropDown 控件。我们将它们称为 DropDown1 和 DropDown2。我的目标是,每当我更改 DropDown1 选择时,它都会自动更改 DropDown2 选择,但我不知道如何在 DropDown 控件中设置“SelectedItem”。

到目前为止,我有一个 VBA 函数,每次更改 DropDown1 的选择时都会触发该函数,我认为这会有所帮助。


您需要在自定义 UI 编辑器中向功能区 XML 添加回调函数,然后将相应的代码添加到 VBA 项目中,以便在功能区选项卡失效时调用。为下拉控件设置所选项目所需的回调是getSelectedItemIndex or getSelectedItemID,取决于您是想按索引还是按 id 选择项目。由于您没有提供任何代码,因此我的示例是通用的(未经测试):

功能区 XML:

<dropDown id="drpTest" label="Test dropdown" getSelectedItemIndex="drpTestGetSelectedItem" ></dropDown>

VBA回调

'Callback for drpTest getSelectedItemIndex
Sub drpTestGetSelectedItem(control As IRibbonControl, ByRef returnedVal)
    returnedVal = 1   '***** To select the item with index 1,
                      '***** replace with code to select the desired item
End Sub

EDIT:

基于其他下拉列表选择索引的示例。在类似的解决方案中,我在中设置了一个值onAction一个控件的功能,并用它来设置另一个控件中选定的索引,如下所示:

功能区 XML:

<dropDown id="drpTest1" label="Test dropdown 1" onAction="drpTest1OnAction" ></dropDown>
<dropDown id="drpTest2" label="Test dropdown 2" getSelectedItemIndex="drpTest2GetSelectedItem" ></dropDown>

VBA 回调

Global myRibbon As IRibbonUI
Global giIndex As Integer

'Callback for customUI.onLoad
Sub RibbonOnLoad(ribbon As IRibbonUI)
    '***** Save reference to ribbon object to invalidate
    Set myRibbon = ribbon
End Sub

'Callback for drpTest1 onAction
Sub drpTest1OnAction(control As IRibbonControl, id As String, index As Integer)
    '***** Set selected item variable for drpTest2
    giIndex = index
    '***** Tell Excel to redraw ribbon
    '(you could invalidate only parts of the ribbon with InvalidateControl
    'or InvalidateControlMso)
    myRibbon.Invalidate
End Sub

'Callback for drpTest2 getSelectedItemIndex
Sub drpTest2GetSelectedItem(control As IRibbonControl, ByRef returnedVal)
    '***** Return selected item for drpTest2 based on value stored in giIndex
    returnedVal = giIndex
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在自定义下拉功能区控件上设置所选项目 的相关文章

随机推荐

  • 刷新 让我们在 docker 容器中加密根 CA

    我在 docker 容器中运行 debian 9 今天我无法更新让我们在容器内加密的根证书 在主机 Ubuntu 20 上 一切都可以正常工作 无需我的任何干预 但在我的 debian 容器上 我无法获得新的根 Lets Encrypt 证
  • 使用Java将Java项目导入到Eclipse中

    我编写了一个java程序 该程序编写了另一个java项目 但是 我想添加一段特定代码 将项目导入工作区 这可以做到吗 你有这里有同样的想法表示为利兰 奥雷维但有更多细节和代码示例 Imports the given path into th
  • 组合 std::function 对象

    说我有 double xSquared const double return x x std function
  • 计算html中两个输入类型=“日期”之间的天数[重复]

    这个问题在这里已经有答案了 我有这段 html 代码 其中有两个日期选择器 输入类型 date 和一个 id numdays 的文本字段 我想计算两个选定日期之间的天数并在文本字段中显示该数字 我还想限制选择早于今天的日期 我认为这可以通过
  • Scanner、nextInt 和 InputMismatchException

    我正在尝试读取一个文本文件 然后使用 Java 中的 nextInt 函数循环打印出整数 我的文本文件的形式为 a 2000 2 b 3000 1 c 4000 5 d 5000 6 这是我的代码 public static void ma
  • C++ 中的动态数组

    我是 C 和编程新手 如果您能在 C 或 C 中动态调整数组大小方面获得一些帮助 我将不胜感激 ex 我需要将值存储到数组中 值可能会改变 设置 1 0 1 2 3 设置 2 0 1 2 3 4 设置 3 0 1 设置 4 0 所以我希望他
  • 将 Moles 与 DateTime 结合使用

    我开始在单元测试中使用 Moles 并且在文档方面遇到了一些困难 我想摩尔 DateTime Now 如果您查看旧的执行此操作的方法是添加对 mscorlib 的引用 然后为其添加一个存根文件 添加新项 gt 用于测试的存根和摩尔 用于测试
  • 每 30 秒执行一次代码

    我有一个服务器需要从其客户端收集信息 该信息是一个随机数 我将其存储到频率数组中 服务器应该告诉所有客户端最频繁的号码 但每隔 30 秒左右一次 发送该号码的客户端会断开连接 并为新的客户端腾出空间 因此 新的数字被添加到数组中 如何让服务
  • 普通图像存储还是 mySQL blob?

    我正在编写一个 php mysql 网络应用程序 它有点像一个博客平台 人们可以在其中上传图片并发布它们 存储这些图像的最佳方式是什么 将它们存储在文件夹中还是通过 BLOB 存储在 mySQL 表中 我问这个是因为我想要最简单的方法 让我
  • 如何使用 AngularJS 重定向到另一个页面?

    我正在使用 ajax 调用来执行服务文件中的功能 如果响应成功 我想将页面重定向到另一个 url 目前 我正在通过纯 JS 代码执行此操作window location response message 但我需要用 AngularJS 代码
  • React Native 组件回调函数

    在组件中 我看到了执行回调的不同方式 有什么区别
  • Blazor 文本在插入后不会立即更改

    我有一个应用程序 用户可以在其中的某个位置插入文本 该文本显示在同一页面上的徽章上 我想要的是 当用户键入时 更改会立即显示在徽章中 我添加了一个 oninput 事件 但 oninput 事件似乎不会更新 razor 页面 因为当我有输入
  • 无法在关联方法上重复 NilClass

    我使用的是 Rails 2 3 5 和 ruby 1 8 7 我正在构建一个简单的 TODO 管理器 我有属于用户的任务 并且用户有许多任务 我在用着acts as taggable on steroids用于标记任务的插件和restful
  • 使用 ChartJS 堆叠浮动水平条

    我正在尝试实施堆叠水平浮动条 using ChartJS但我面临着一种不寻常的行为 有人可以帮忙为什么会发生这种情况吗 我正在使用的代码是
  • 忽略受密码保护的 Excel 文件[重复]

    这个问题在这里已经有答案了 我正在迭代一个充满 xlsx 文件的目录 我正在使用 VBA 打开它们并调整几列的大小 其中一些要求输入密码 我不知道 所以我只想跳过这些文件并转到下一个 在VBA中如何实现这一点 我尝试了以下方法 但没有这样的
  • 在 php facebook sdk 4.0.0 或更高版本中指定应用程序范围

    我正在使用 facebook 的新 php sdk gt 4 0 0 我试图找出在哪里指定scope我对图形 API 的请求 就像 我在哪里指定我想要publish actions这样用户就可以在登录时授权我这样做 In 这里的链接它说 您
  • 如何在 Unity 中序列化并保存游戏对象

    我有一个游戏 玩家拿起武器 然后将其作为 GameObject 变量放置给我的玩家 称为 MainHandWeapon 我试图通过场景更改来保存该武器 所以我试图保存它 我的处理方法如下 public class Player Manage
  • 使用 Requirejs 动态加载语言环境文件

    我有一个基于 RequireJS 构建的单页 Marionette 应用程序 需要支持翻译 我的目标是为每种语言提供一个字典文件 并根据登录用户的配置加载相关文件 由于大多数用户会使用英语 因此我想在构建过程中将英语词典捆绑到应用程序中 使
  • 使用查询字符串参数从 url 下载自定义设置

    我制作了一个 Windows 服务应用程序 我想创建一个安装文件 当用户通过我们的网站 URL 和查询参数请求应用程序时 例如 http test com setup exe id 1212 我需要将当前的 app config 键值更改为
  • 如何在自定义下拉功能区控件上设置所选项目

    我正在使用自定义 UI 编辑器为 Excel 创建一个自定义选项卡 其中有两个 DropDown 控件 我们将它们称为 DropDown1 和 DropDown2 我的目标是 每当我更改 DropDown1 选择时 它都会自动更改 Drop