首页
学习
活动
专区
工具
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 版本中不可用。

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

相关·内容

没有搜到相关的沙龙

领券