Google表格-在单元格仍处于打开状态时启动宏

我还是Google表格的超级新手,在此之前我主要是在VBA中编程的。

我正在从事的项目是D&D类型的游戏,DM将使用Sheet记录对怪物造成的伤害。 DM基本上输入损坏,单击“计算”按钮,然后代码总结当前对Baddie的损坏。

该代码运行完美。我遇到的问题是人类的问题。在关闭单元格之前,倾向于单击“计算”按钮。

例如,DM在单元格中键入31,并在单击Enter之前立即单击“计算”。这样可以防止损坏被正确记录,我无法弄清楚使单元格先关闭的代码。

这是我当前的代码:

function DamageRecordEnemy1Copy1() {
  var spreadsheet = Spreadsheetapp.getactive();
  spreadsheet.getRange('A1').activate();

  var DamageLocation = spreadsheet.getRange('Q4');
  var DamageLogLocation = spreadsheet.getRange('Q5');
  var DamageLocationValue = DamageLocation.getvalue();
  var DamageLogLocationValue = DamageLogLocation.getvalue();
  var NewDamage = DamageLocationValue + DamageLogLocationValue;

  DamageLocation.activate();
  spreadsheet.getcurrentCell().setvalue(NewDamage);

  DamageLogLocation.activate();
  spreadsheet.getcurrentCell().setvalue("");
  spreadsheet.getRange('A1').activate();
}

任何想法如何解决该问题?非常感激!

感谢大家的帮助,这就是我最终要做的事情:

function onEdit(e){
  var spreadsheet = Spreadsheetapp.getactiveSpreadsheet().getactiveSheet();
  var range = e.range;

  var DamageLocation = spreadsheet.getRange('Q4');
  var DamageLogLocation = spreadsheet.getRange('Q5');
  var DamageLocationValue = DamageLocation.getvalue()
  var DamageLogLocationValue = DamageLogLocation.getvalue()

  var allRows = [5];
  var allColumns = [17,20,23,26,29,32];

  var EditRow = range.getRow()
  var EditColumn = range.getcolumn()

  if (allColumns.indexOf(EditColumn)  > -1)
  {
      if (allRows.indexOf(EditRow)  > -1)
      {
        var BadDamage = spreadsheet.getRange(EditRow-1,EditColumn)
        var BadDamageLog = spreadsheet.getRange(EditRow,EditColumn)

        var DamageCalc = BadDamage.getvalue() + BadDamageLog.getvalue()
        BadDamage.setvalue(DamageCalc);
        BadDamageLog.setvalue("");   
      }
  }  
};
drahcir88t 回答:Google表格-在单元格仍处于打开状态时启动宏

用insert->复选框替换“按钮”,然后使用OnEdit函数检查该单元格是否设置为true,执行按钮代码并将其设置为false。之所以可行,是因为工程图位于其自己的图层上,但是此复选框将迫使其具有“按回车”行为。

本文链接:https://www.f2er.com/3113330.html

大家都在问