【发布时间】:2017-07-23 14:07:07
【问题描述】:
在VBA中,如果我使用TypeName(Selection),我可以看到当前选择的对象类型:我得到Range、Shape、ChartArea等
据我所知,在 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 总是返回一个对象并且从不抛出(如果您选择了图表之类的东西,或者只是返回最后一个范围)。不是这样吗? (请注意,我正在休假,所以回复可能会延迟。但我确实想确保我们这里没有错误)
-
如果我当前的选择是
ChartObject、Shape、Picture、ActiveX 对象或嵌入的 Office 插件Rectangle对象,则getSelectedRange会引发错误.同样重要的是要注意,如果范围选择有多个区域,它也会引发错误。 -
好的,感谢您报告此问题(并为延迟回复道歉,我正在度假)。您是否介意在github.com/OfficeDev/office-js/issues 上打开一个错误,以便我们对此进行调查,以便您随时了解状态?