【问题标题】:Return Excel object type in selection在选择中返回 Excel 对象类型
【发布时间】:2017-07-23 14:07:07
【问题描述】:

在VBA中,如果我使用TypeName(Selection),我可以看到当前选择的对象类型:我得到RangeShapeChartArea

据我所知,在 JS 中,没有 Selection 对象,因此我无法验证用户是否在工作表中做出了正确的选择。目前,我只是坚持使用通用错误处理程序,如果用户在我的脚本运行时没有选择范围workbook.getSelectedRange(),它将失败。

如何检测当前在工作表中选择的类型?


编辑:这是我正在使用的代码。

function btnApply_Click() {
    Excel.run(function (context) {

        var rangeSelection;

        return context.sync()
        .then(function () {
            rangeSelection = context.workbook.getSelectedRange();
            rangeSelection.load("values");
            return context.sync().catch(function (error) {
                throw new u.error.exclamation("The selection must be a cell.");
            });
        })
        .then(function () {
            var values = rangeSelection.values;
            convertSelection(values);
            rangeSelection.values = values;

            return context.sync();
        })
    })
    .catch(function (error) { u.error.show(error); });
}

【问题讨论】:

  • Felipe,在什么情况下您没有范围选择?以我的经验,我认为 getSelectedRange 总是返回一个对象并且从不抛出(如果您选择了图表之类的东西,或者只是返回最后一个范围)。不是这样吗? (请注意,我正在休假,所以回复可能会延迟。但我确实想确保我们这里没有错误)
  • 如果我当前的选择是 ChartObjectShapePicture、ActiveX 对象或嵌入的 Office 插件 Rectangle 对象,则 getSelectedRange 会引发错误.同样重要的是要注意,如果范围选择有多个区域,它也会引发错误。
  • 好的,感谢您报告此问题(并为延迟回复道歉,我正在度假)。您是否介意在github.com/OfficeDev/office-js/issues 上打开一个错误,以便我们对此进行调查,以便您随时了解状态?

标签: excel office-js


【解决方案1】:

您可以将回调参数传递给getSelectedDataAsync 方法。 Office 会将AsyncResult 对象传递给此回调。在回调内部,AsyncResult.value.type 是对象的类型。

【讨论】:

  • 谢谢。我不使用任何这些方法。我记得当 Office Addins 发布到 Excel 2013 时看到它们。对于我现在使用的版本,我会将这些参数放在哪里?我编辑了我的问题并粘贴了我正在使用的代码。
  • @Felipe。我了解到您目前没有使用 getSelectedDataAsync。我的回答是你应该这样做。以我描述的方式使用此方法是您问题的答案:“如何检测工作表中当前选择的类型?”
  • 您能否分享一个代码 sn-p,显示如何确定选择了哪个图表元素,或者哪个图表是活动图表?
  • @JonPeltier 这真的是一个不同的问题。我可以请您创建一个新的 StackOverflow 问题吗?谢谢!
  • Rick,我实际上是在寻找可以帮助我理解 getSelectedDataAsync 功能的示例。不知何故,我让自己相信它可以告诉我选择了哪些对象(不仅仅是单元格范围)。我不太了解文档,想看看一些基于 Excel 的示例。
猜你喜欢
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2019-06-11
  • 2019-05-27
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
相关资源
最近更新 更多