Есть ли способ узнать, является ли диапазон именованным диапазоном? - PullRequest
1 голос
/ 20 апреля 2020

Контекст: я работаю над надстройкой для Excel, используя «новый» Microsoft Office Javascript API.

На данный момент я могу получить выбор пользователя и коллекцию именованных диапазонов в рабочей таблице. с кодом ниже:

const selectedRange = context.workbook.getSelectedRange();
const namedRanges = context.workbook.names;

Однако я пытаюсь проверить, является ли выбор пользователя selectedRange именованным диапазоном на листе и, если да, получить объект именованного диапазона.

Пока что я не нашел «встроенного» способа сделать это, и единственными идеями, которые у меня есть, был бы кошмар для реализации или плохая производительность.

Возможно ли это вообще? Какие у вас идеи?

Спасибо, что прочитали!

1 Ответ

0 голосов
/ 20 апреля 2020

Спасибо за ваш вопрос.

Вы можете использовать getIntersectionOrNullObject, чтобы определить, находится ли ваш выбор в namedRanges или нет. он может вернуть адрес selectedRange в getIntersectionOrNullObject или вернет нулевой объект

Вот пример кода:

  Excel.run(function (ctx) {

    const selectedRange = ctx.workbook.getSelectedRange();
    const namedRanges = ctx.workbook.names;

    var sheetName = "Sheet1";
    var rangeAddress = "A1:F8"; // replace to named range address
    // var rangeAddress = namedRanges.items[0].getRange();

    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));
    }
  });

документ можно найти по адресу https://docs.microsoft.com/en-us/javascript/api/excel/excel.range?view=excel-js-preview#getintersection -anotherrange-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...