选择不连续的范围

时间:2018-05-07 22:14:14

标签: excel office-js

我正在为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”}

2 个答案:

答案 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方法上传递一个类似的字符串来创建一个区域并同时格式化它等。

请试一试,并将您的反馈发送给我们!谢谢!