0

每个人。

我需要监视活动或选定单元格的代码,以在用户不再在其中时阻止它们。我知道最终的问题是当用户选择单元格并且仍然没有进行任何更改时,但这是我必须处理的事情,因为我们还不支持像“onChange”这样的东西。问题是,如果用户开始编辑,getActiveCell/getSelectedRange 方法会失败并停止脚本,即使我在 try 块中调用它也是如此。下面的代码展示了这个想法的核心,当代码设法知道用户在哪个单元格以及他何时离开该单元格时。下一步是使用 setLock 代替 console.log,一切都会好起来的。

function main(workbook: ExcelScript.Workbook)
{
  while(true){
    try{
      let cell = workbook.getSelectedRange().getAddress();
    }
    catch(e){}
    console.log(cell)
    while(workbook.getSelectedRange().getAddress() == cell){}
  }
}
4

1 回答 1

0

如果您想在用户完成编辑并离开后锁定单元格,您可以尝试以下操作:

function main(workbook: ExcelScript.Workbook) {
  let lastSelectedCell = "";
  let cell = "";
  let errorCaughtBefore = false;
  let worksheet = workbook.getActiveWorksheet();
  if (!worksheet.getProtection().getProtected()) {
    worksheet.getProtection().protect();
  }
  while (true) {
    try {
      cell = workbook.getSelectedRange().getAddress();
      if (errorCaughtBefore && lastSelectedCell) {
        console.log(lastSelectedCell);
        worksheet.getProtection().unprotect();
        worksheet.getRange(lastSelectedCell).getFormat().getProtection().setLocked(true);
        worksheet.getProtection().protect();
        errorCaughtBefore = false;
      }
    }
    catch (e) {
      errorCaughtBefore = true;
      lastSelectedCell = cell;
    }
  }
}

请注意

于 2021-07-29T19:23:37.007 回答