Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择范围识别_Javascript_Excel_Office Js - Fatal编程技术网

Javascript 选择范围识别

Javascript 选择范围识别,javascript,excel,office-js,Javascript,Excel,Office Js,我正在寻找在Office.js Excel工作簿中唯一标识/识别选定范围的最佳方法。到目前为止,我正在使用绑定为一个范围设置名称,即A1:A1。但是,不清楚如何检查用户何时选择上述范围(如果它是工作簿中上述绑定的一部分)。 要设置绑定,我使用以下代码: var myBindings = Office.context.document.bindings; var myAddress = "Sheet1!A1:A1"; myBindings.addF

我正在寻找在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);
                });
            });

您可以使用getIntersectionOrNullObject来检测您的选择是否在namedRanges中。它可以返回getIntersectionOrNullObject中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));
    }
  });