选定范围识别

问题描述 投票:2回答:1

我正在寻找一种最好的方法来唯一地识别并识别Office.js Excel工作簿中的选定范围。到目前为止,我正在使用绑定来设置一个范围的名称,即。A1:A1. 然而,它是不清楚如何检查,当用户选择上述范围,如果它是上述绑定在工作簿的一部分.设置绑定我使用下面的代码。

 var myBindings = Office.context.document.bindings;
            var myAddress = "Sheet1!A1:A1";
            myBindings.addFromNamedItemAsync(myAddress, Office.BindingType.Matrix, { id: "myBind" }, function (asyncResult) {
                asyncResult.value.getDataAsync(function (asyncResult2) {
                    console.log(asyncResult2.value);
                });
            });
javascript excel office-js
1个回答
0
投票

你可以使用getIntersection或NullObject来检测你的选择是否在namedRanges中,它可以在getIntersection或NullObject中返回selectedRange的地址,或者它将返回null对象。

以下是示例代码

 Excel.run(function (ctx) {

    const selectedRange = ctx.workbook.getSelectedRange();
    var binding = ctx.workbook.bindings.getItemAt(0);
    var range = binding.getRange();

    var sheetName = "Sheet1";
    var rangeAddress = "A1:F8"; // replace to binding range address
    // var rangeAddress = range.address;

    var range =
      ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress).getIntersectionOrNullObject(selectedRange);

    range.load('address');

    console.log("test");
    return ctx.sync().then(function () {
      console.log("test2");

      console.log(range.address);  
    });
  }).catch(function (error) {
    console.log("Error: " + error);
    if (error instanceof OfficeExtension.Error) {
      console.log("Debug info: " + JSON.stringify(error.debugInfo));
    }
  });
© www.soinside.com 2019 - 2024. All rights reserved.