我正在为Excel构建office-js加载项。我需要选择两个不相邻的单元格(例如A1和C3)。以下代码用于选择从A1开始到C3结束的多单元格范围。
Excel.run(function (ctx) {
var sheet = ctx.workbook.worksheets.getItem('sheet1');
var range = sheet.getRange('a1:c3');
range.select();
return ctx.sync();
});
但是,我希望只选择两个单元格(A1和C3)。在VBA中,语法是
worksheets("sheet1").range("a1,c3").select
但我在office-js中找不到类似的东西。我尝试过与office-js类似的语法:
Excel.run(function (ctx) {
var sheet = ctx.workbook.worksheets.getItem('sheet1');
var range = sheet.getRange('a1,c3');
range.select();
return ctx.sync();
});
但它失败了:{“code”:“InvalidArgument”,“message”:“参数无效或缺失或格式不正确。”,“errorLocation”:“Worksheet.getRange”}
答案 0 :(得分:1)
Office.js中尚不支持使用不连续范围的API。我们正在努力并正在最终完成设计。与此同时,您必须为两个单元格创建单独的范围对象,并使用重复命令对每个单元格进行操作。
答案 1 :(得分:1)
实际上,就在几天前部署的最新内部人员(16.0.9327.2006)你可以实际尝试我们的区域实现(也就是不连续的范围。)
请务必使用我们的预览cdn进行测试。(https://appsforoffice.microsoft.com/lib/beta/hosted/office.js)
但基本上你可以做以下事情:
function run() {
return Excel.run(function (context) {
var range = context.workbook.getSelectedRange();
range.load("address");
return context.sync()
.then(function () {
console.log("The range address was \"" + range.address + "\".");
});
});
}

你将看到,如果你选择一个非连续的范围,你会得到类似的东西:" Sheet1!C6:C14,Sheet1!F12:H22"。
你可以在getRange方法上传递一个类似的字符串来创建一个区域并同时格式化它等。
请试一试,并将您的反馈发送给我们!谢谢!