首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

未运行onAction或getPressed回调的Excel功能区切换按钮

在 Excel 中使用 Office JavaScript API 创建自定义功能区(Ribbon)时,可能会遇到切换按钮(Toggle Button)的 onActiongetPressed 回调未运行的问题。以下是一些常见的原因和解决方法:

1. 检查 Manifest 文件

确保你的 manifest 文件中正确配置了切换按钮的 onActiongetPressed 回调。

代码语言:javascript
复制
<Control xsi:type="ToggleButton" id="myToggleButton">
  <Label resid="myToggleButtonLabel"/>
  <Supertip>
    <Title resid="myToggleButtonTitle"/>
    <Description resid="myToggleButtonDescription"/>
  </Supertip>
  <Icon>
    <bt:Image size="16" resid="icon16"/>
    <bt:Image size="32" resid="icon32"/>
    <bt:Image size="80" resid="icon80"/>
  </Icon>
  <onAction xsi:type="ExecuteFunction" FunctionName="onToggleButtonAction"/>
  <getPressed FunctionName="isToggleButtonPressed"/>
</Control>

2. 实现回调函数

确保在你的 JavaScript 文件中正确实现了 onActiongetPressed 回调函数。

代码语言:javascript
复制
Office.onReady((info) => {
  if (info.host === Office.HostType.Excel) {
    // Office is ready
    // You can add your initialization code here
  }
});

function onToggleButtonAction(event) {
  // 获取当前状态
  const isPressed = event.source.control.checked;

  // 执行相应的操作
  if (isPressed) {
    console.log("Toggle button is pressed");
    // 执行按下时的操作
  } else {
    console.log("Toggle button is not pressed");
    // 执行未按下时的操作
  }

  // 通知 Office 操作已完成
  event.completed();
}

function isToggleButtonPressed(event) {
  // 返回当前按钮的状态
  const isPressed = true; // 或者从某个状态变量中获取
  event.completed(isPressed);
}

3. 检查 Office 加载项的加载状态

确保你的 Office 加载项已正确加载,并且 Office.onReady 已成功执行。

代码语言:javascript
复制
Office.onReady((info) => {
  if (info.host === Office.HostType.Excel) {
    console.log("Office is ready");
    // 你可以在这里添加初始化代码
  }
});

4. 调试和日志记录

使用 console.log 或其他调试工具来记录回调函数的执行情况,以确保它们被正确调用。

代码语言:javascript
复制
function onToggleButtonAction(event) {
  console.log("onToggleButtonAction called");
  const isPressed = event.source.control.checked;
  console.log("Toggle button state:", isPressed);

  if (isPressed) {
    console.log("Toggle button is pressed");
  } else {
    console.log("Toggle button is not pressed");
  }

  event.completed();
}

function isToggleButtonPressed(event) {
  console.log("isToggleButtonPressed called");
  const isPressed = true; // 或者从某个状态变量中获取
  console.log("Returning toggle button state:", isPressed);
  event.completed(isPressed);
}

5. 确保正确引用 JavaScript 文件

确保你的 manifest 文件中正确引用了包含回调函数的 JavaScript 文件。

代码语言:javascript
复制
<Resources>
  <bt:Images>
    <bt:Image id="icon16" DefaultValue="https://contoso.com/assets/icon-16.png"/>
    <bt:Image id="icon32" DefaultValue="https://contoso.com/assets/icon-32.png"/>
    <bt:Image id="icon80" DefaultValue="https://contoso.com/assets/icon-80.png"/>
  </bt:Images>
  <bt:Urls>
    <bt:Url id="functionFile" DefaultValue="https://contoso.com/assets/functions.js"/>
  </bt:Urls>
</Resources>

<FunctionFile resid="functionFile"/>

6. 清除缓存

有时,浏览器缓存可能会导致旧的 JavaScript 文件被加载。尝试清除浏览器缓存或在无痕模式下重新加载 Excel 加载项。

7. 检查 Office 版本

确保你使用的 Office 版本支持你所使用的 Office JavaScript API。某些功能可能在较旧的 Office 版本中不可用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

VBA专题10-23:使用VBA操控Excel界面之添加动态菜单

学习Excel技术,关注微信公众号: excelperfect 在本系列后面的示例程序中,你将会看到如何使用项目和带图像的库控件通过getItemLabel和getItemImage回调属性引用的VBA...另一个允许动态填充其内容的控件是组合框控件。 动态菜单控件可以在运行时做更多的事,是唯一一个其内容的结构可以在运行时改变的控件,可以包含自定义控件和内置控件——包括其他动态菜单。...单击工具栏中的Validate按钮检查是否有错误。 7. 保存并关闭该文件。 8. 在Excel中打开该文件。对于弹出的错误消息,单击“确定”。 9. 按Alt+F11激活VBE。 10....这可以通过使用模块级的变量和getPressed回调属性来实现。下面,我们修改现有的VBA代码来实现此目的(加黑的代码是在上面代码中增加的代码): 1....在VBE中,选择运行|重新设置。 当VBE显示标准的错误消息框(因为一个未处理的运行时错误发生),可以单击消息框中的结束按钮。 关闭该工作簿文件。

6.2K20

VBA专题10-24:使用VBA操控Excel界面之单元格上下文菜单(Excel 2010及以后的版本)

学习Excel技术,关注微信公众号: excelperfect 添加按钮控件 假设你需要对工作表中前面有货币符号的值执行计算,然而那些值被解释为文本,你要编写VBA过程来移除所选单元格区域中的货币符号。...添加其他类型的控件 除了上面介绍的使用XML代码在单元格上下文菜单中添加按钮控件外,还可以添加6种其他类型的内置控件和自定义控件:切换按钮、拆分按钮、菜单、库、复选框和动态菜单。...Item = Right(Item, Len(Item) -3) End If Next Item End If End Sub 在功能区...下图展示了含有不同类型的(自定义和内置的)控件的单元格上下文菜单: 640 (1).gif 注意,无法将控件添加到Excel 2007中的单元格上下文菜单和更早的XML代码中。...注:如果你有兴趣,你可以到知识星球App的完美Excel社群下载这本书的完整中文版电子书。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

1.6K10
  • VBA专题10-9:使用VBA操控Excel界面之在功能区中添加自定义按钮控件

    组元素: group元素中label属性的值指定功能区中组显示的文本。 按钮元素: 其imageMso属性为按钮指定预定义的图像。...如果要使用自已设计的图像,只需使用image属性替换掉imageMso属性。 onAction属性是一个回调属性。该属性的值是在单击按钮时要执行的VBA过程的名称。 5....由于XML代码中有两个回调属性(每个按钮一个),因此生成两个回调: 'Callback for BtnInsert0onAction SubInsert0(control As IRibbonControl...在Insert0回调过程中的参数control有3个属性: ID:在XML代码中指定的控件的id。 Context:包含该功能区的活动窗口。...下图展示在功能区的“插入”选项卡出现了含有两个按钮的Attn Sh组。 ?

    5.2K30

    VBA专题10-22:使用VBA操控Excel界面之重新利用内置控件以及监控内置控件

    学习Excel技术,关注微信公众号: excelperfect 重新利用内置控件 通过使用command元素及其onAction属性,可以临时或永久地覆盖内置控件的功能。...在标准VBA模块中编辑回调过程,永久地重新利用“剪切”控件的功能: 'Callback for Cut onAction Sub MyCut(control As IRibbonControl, ByRef...也可以临时覆盖内置控件的功能,并通过简单地设置回调过程中的参数cancelDefault为False来重新恢复其功能。...cancelDefault = False End Sub 注意,“加粗”控件是一个切换按钮,其onAction属性的回调必须带有上面所示的3个参数。...然而,在Custom UI Editor for Microsoft Office中产生的回调签名的参数数量错误,如下: 'Callback for Bold onAction(wrong number

    1.1K10

    VBA专题10-14:使用VBA操控Excel界面之在功能区中添加自定义库控件

    excelperfect 在自定义功能区时,我们可以插入图像到自定义库中,图像文件的类型可以是ico、bmp、png、jpg和tif。 要给自定义功能区选项卡添加库控件,执行下列步骤: 1....单击工具栏中的Validation按钮检查是否XML代码有错误。 9. 单击工具栏中的Generate Callbacks按钮。...onAction回调属性生成一个回调过程,下面是该回调的签名: 'Callback for gallery1 onAction Sub SelectedColor(control As IRibbonControl...在Excel中打开该文件。 12. 按Alt+F11键激活VBE。 13. 插入一个标准的VBA模块,并粘贴在步骤9中复制的回调代码。 14. 在过程中添加一个MsgBox语句来测试控件。...自定义功能区\13\" & imageID) 'msgbox ImageName End Sub 该过程遍历XML代码中的每个item元素,查找图像的文件名并获取图像装载到库控件。

    3.1K10

    VBA专题10-11:使用VBA操控Excel界面之在功能区中添加自定义拆分按钮控件

    拆分按钮控件是一个含有单击按钮和下拉按钮列表的组合控件。用户可以选择单击按钮,或者从下拉列表中选择单击其中一个按钮来执行相应的命令。...添加拆分按钮控件的步骤与本系列前面文章(参见:VBA专题10-10:使用VBA操控Excel界面之在功能区中添加自定义切换按钮控件、VBA专题10-9:使用VBA操控Excel界面之在功能区中添加自定义按钮控件...图1 在VBE中添加回调代码: 'Callbackfor Btn1 onAction Sub Macro1(control As IRibbonControl) MsgBox control.Tag..." End Sub 单击自定义的拆分按钮,会根据按钮的不同显示不同的消息框,如图2所示为单击按钮Button1时显示的消息框。...注意,由于我们将Button1和menuButton1定义了相同的tag属性,因此单击拆分按钮中的单个按钮和菜单中的第一个按钮时都会弹出如图2所示的消息框。 ?

    1.8K10

    VBA专题10-25:使用VBA操控Excel界面之一个示例程序

    学习Excel技术,关注微信公众号: excelperfect 在前面的一系列主题中,你已经学到了很多小的修改工作簿外观的VBA代码。下面,我们将介绍一个简单的示例程序,实现下面的功能特点: 1....如果取消选取(或选取)指定的内置复选框(例如,在“视图”选项卡中的“编辑栏”复选框),那么禁用(或启用)自定义控件(例如,在“视图”选项卡中的G5B1按钮)。 5....单击工具栏中的Validate按钮来检查是否有错误。 9. 保存并关闭该文件。 10. 在Excel中打开该文件。对于错误消息单击“确定”。 11. 按Alt+F11激活VBE。 12....回调 Sub MacroG2B1(control AsIRibbonControl) MsgBox "MacroG2B1" End Sub ' G2B2onAction回调 Sub MacroG2B2...回调 Sub MacroG4B3(control AsIRibbonControl) MsgBox "MacroG4B3" End Sub ' G5B1onAction回调 Sub MacroG5B1

    2.4K10

    VBA专题10-10:使用VBA操控Excel界面之在功能区中添加自定义切换按钮控件

    excelperfect 添加的步骤与本系列上一篇文章《VBA专题10-9:使用VBA操控Excel界面之在功能区中添加自定义按钮控件》中的步骤相同,即:新建一个启用宏的工作簿并保存,关闭该工作簿,然后在...重新打开该工作簿后,在“Custom”选项卡中显示含两个切换按钮的组,如图1所示。我们看到,一个按钮带有标签,一个没有标签。可以对照XML代码看看自定义的界面是怎么创建的。 ?...图1 在VBE中添加回调代码,返回切换按钮的状态: 'Callbackfor toggleBtn1 onAction Sub Macro1(control As IRibbonControl, pressed...As Boolean) MsgBox control.ID & "的按下状态是:" & pressed End Sub 'Callbackfor toggleBtn2 onAction Sub...Sub 单击自定义的按钮,会根据按钮是否被按下,弹出下图2所示的信息框,这是切换按钮被按下时显示的信息。

    1.8K10

    VBA专题10-19:使用VBA操控Excel界面之在功能区中添加不同类型的自定义控件

    excelperfect 本文是前面一系列文章的综合,前面每篇文章讲解如何在功能区中添加一类自定义控件,本文讲解如何将在功能区中同时添加这些控件。...在Excel中打开该工作簿,然后打开VBE,插入一个标准的VBA模块,输入下面的代码: 'Callback for button1 onAction Sub Macro1(control As IRibbonControl...MsgBox "切换按钮的状态为: "& pressed End Sub 'Callback for toggleBtn2 onAction Sub Macro9(control As IRibbonControl..., pressed As Boolean) MsgBox "切换按钮的状态为: "& pressed End Sub 'Callback for Btn1 onAction Sub Macro10...注:如果你有兴趣,你可以到知识星球App的完美Excel社群下载这本书的完整中文版电子书。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    1.9K10

    Excel实战技巧60: 自定义功能区

    图3 下面,为自定义功能区添加响应功能。 修改按钮 主要介绍如何为按钮添加图像并链接到宏。 再次修改Excel文件的扩展名为压缩文件,将my_customUI.xml文件拖出压缩文件并进行修改。...该文件告诉Excel怎样识别想要放置在功能区中的图像,其代码类似如下: 按钮1" imageMso="HappyFace" size="large" onAction="MyHello" /> 使用更新后的文件替换掉压缩文件中的相应文件后,恢复Excel扩展名,打开Excel...2.在my_customUI.xml文件中输入自定义功能区的XML代码。 3.修改Excel文件的扩展名为压缩文件。 4.将压缩文件中的_rels文件夹复制并粘贴到压缩文件外。...8.将压缩文件扩展名恢复成Excel文件扩展名。 9.在VBE中编写相关控件的回调代码,注意过程名后带有相应的回调参数。

    1.9K10

    VBA专题10-21:使用VBA操控Excel界面之禁用和启用控件、组和选项卡

    被禁用的控件在功能区中显示的是灰色。...例如,下面的示例XML代码禁用“复制”、“剪切”、“加粗”和“下划线”控件: image.png 下图显示了功能区中被禁用的“复制”、“剪切”、“加粗”和“下划线”控件已变成灰色: image.png...虽然在功能区中被禁用的控件是灰色的,但你仍然可以通过快捷键组合执行它们中的一些命令。...示例XML代码: image.png 在Excel中打开该工作簿时,自动执行Initialize回调和GetEnabledAttnSh回调。...是否启用(或禁用)某控件取决于在RefreshRibbon中参数传递的值。一旦使这些控件无效,就调用GetEnabledAttnSh过程,遍历共享这个相同回调的所有无效的控件。

    3.4K20

    在Excel中自定义上下文菜单(上)

    Excel中的上下文菜单 在Microsoft Excel中,人们最常用的上下文菜单是单元格上下文菜单,这是在工作表单元格或选定单元格上单击鼠标右键时看到的菜单(如下图1所示)。...图1 在Excel中自定义上下文菜单 在Excel 2007以前的版本中自定义上下文菜单的唯一方法是使用VBA代码,然而,在Excel 2007后续版本中,还可以使用相同的功能区扩展性(RibbonX)...RibbonX模型用于自定义Microsoft Office Fluent用户界面的其他组件,包括功能区和后台视图。 使用RibbonX自定义上下文菜单的优点之一是,可以添加无法使用VBA添加的控件。...要激活分页预览模式,在功能区上单击“视图”,然后单击“分页预览”。...单击按钮或子菜单中的三个选项之一时,会运行其他四个过程。在本例中,最后四个宏更改单元格中任何文本的大小写。

    2.8K40

    ​VB.net-VSTO如何创建第一个项目

    VB.net-VSTO如何创建第一个项目 在这一个项目中,我们要完成事项 1.一个菜单, 2.一个功能区按钮, 3.按钮能响应事件, 4.对Excel的内容显示区进行操作:读取、写入 1.创建项目 2....文件中,去除注释 (3.2)在Ribbon1.xml文件中添加代码,用的我们要显示在Excel中的功能区的按钮 4.测试运行,此时我们已完成了菜单、功能区按钮的创建。...XmL文件中添加 onAction="AboutMe"/> onAction="AboutMe"表示如果点击按钮就会触动事件AboutMe..."作者:哆哆" + vbCrLf + "公众号:哆哆Excel" + vbCrLf + "开发软件:Visual Studio 2019", Title:="哆哆提示")  End Sub (5.3)运行测试..."测试读取Excel中内容" onAction="TestExcel"/>   Excel的内容" onAction="TestExcel"/>

    28410

    VBA专题10-18:使用VBA操控Excel界面之在功能区中添加自定义菜单控件

    excelperfect 这是本系列文章讲解的最后一种在功能区中添加的自定义控件类型,也是用于组织多个命令的一种非常有用的控件——菜单控件。...在Excel中打开该工作簿,然后打开VBE,插入一个标准的VBA模块,输入下面的代码: 'Callback for button1 onAction Sub Macro1(control As IRibbonControl...注意,本例只是演示了使用XML在菜单控件中添加按钮和菜单控件,也可以添加其他类型的控件,例如切换按钮、拆分按钮、库、复选框、通用控件和动态菜单。...说明:本专题系列大部分内容学习整理自《Dissect and Learn Excel VBA in 24 Hours:Changing workbook appearance》,仅供学习研究。...注:如果你有兴趣,你可以到知识星球App的完美Excel社群下载这本书的完整中文版电子书。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识

    1.6K30

    VBA通用代码:在Excel中创建弹出菜单

    标签:VBA,快捷菜单 弹出菜单(有时也称为上下文菜单或快捷菜单)是用户界面(UI)中的菜单,提供了一组命令选项,通过某些用户操作(如鼠标右键单击)在应用程序的当前状态或上下文中可用。...由于在2007 MicrosoftOffice系统中,Microsoft用功能区UI取代了命令栏菜单结构,这造成了创建在不同版本的MicrosoftOffice中工作的菜单的技术会有所不同。...本文使用一种有效的技术创建在所有Excel版本中都可使用的弹出菜单。 注意,内置或自定义上下文菜单不同于弹出菜单的一种方式是,上下文菜单仅在右键单击鼠标时显示,而弹出菜单可以在需要时显示。...End Sub 回到Excel界面,按Alt+F8键,调出“宏”对话框,选择“CreateDisplayPopUpMenu”宏,单击“选项”按钮,在“宏选项”对话框中的“快捷键”中输入字母m,如下图1所示...图1 这样,在Excel工作表中,按Ctrl+m组合键,会出现如下图2所示的弹出菜单。 图2 当单击菜单中的按钮时,会弹出一个信息框,如下图3所示。

    3.5K51

    VBA专题10-16:使用VBA操控Excel界面之在功能区中添加自定义复选框控件

    excelperfect 在本专题前面的一系列文章中,我们已经讲解了如何在功能区中添加自定义的按钮控件、切换按钮控件、拆分按钮控件、组合框控件、下拉控件、库控件、标签控件,添加自定义控件的步骤相同,都是先编写...本文继续介绍如何在功能区中添加自定义复选框控件。...在功能区中添加复选框控件的步骤与前面文章介绍的相同,新建一个启用宏的工作簿并保存,关闭该工作簿,然后在CustomUI Editor中打开该工作簿,输入下面的XML代码: ?...在标准VBA模块中的代码如下: 'Callback for checkBox1onAction Sub Checkbox1_change(control As IRibbonControl, pressed...注:如果你有兴趣,你可以到知识星球App的完美Excel社群下载这本书的完整中文版电子书。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    1.6K00

    常用功能加载宏——单元格数字自定义格式

    自定义格式能够给数据的格式设置带来极大的便利,并且设置的格式也非常的丰富,Excel内置的设置单元格格式那些东西: ?...Excel自定义里面也内置了很多格式,如果你新设置了一个自定义格式,Excel会自动添加在这里面,然后再选中自己设置的那个自定义格式后,右下角那个删除按钮就可以点击了。...手机号码用空格隔开显示 在Excel中,一大串数字用眼睛看是比较容易看错的,做联系人表格的时候,如果有手机号码,11个连续的数字在一起,人眼去看要特别的仔细,一不小心可能就会看错。...0000 0000"/> 回调函数、函数实现和前面的共用。...这里只是举了个人经常碰到的例子,只要明白了自定义格式的代码逻辑,在自己的工作中,可以根据自己的实际情况去设置有需要的自定义格式,设置起来也非常的简单,onAction都是共用的,只需要设置正确的tag就可以

    77731
    领券