我并不擅长与计算机有关,并试图在VBA中创建计时器并在那里遇到障碍(宏在共享时会失去功能)我尝试使用Google表格创建相同的东西,所以使用共享工作表变得更容易,但现在有一组不同的问题:
1)我的计时器实际上不是一个计时器,而只是一个'for循环',它基于分钟时间触发递增,因此每个后续单元计时器越多,单元越慢。
2)当单元定时器运行一段时间后,定时器自动停止并给出错误消息:
使用太多计算机时间服务一天
或有时
超过最长执行时间
然后我必须手动触发计时器或等待分钟时间触发再次触发,这将使该表无用。
如果有人愿意帮助这个旧计时器,我会粘贴下面的代码:
makelist()在另一张纸上存储单元格位置,以查找使用“开始”按钮调用此函数的单元格
function makelist() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var cell = ss.getActiveCell();
var r = cell.getRow();
var c = cell.getColumn();
var list = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
var i = 1;
var cell=list.getRange(1,1);
while( cell.getValue()!= ""){
i++;
cell=list.getRange(i,1);
}
cell.setValue(r);
cell=list.getRange(i,2);
cell.setValue(c);
}
dellist()删除从列表中按下StopButton的特定单元格位置。
function dellist(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var cell = ss.getActiveCell();
var r = cell.getRow();
var c = cell.getColumn();
var list = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
var i = 1;
var cell1=list.getRange(1,1);
var cell2=list.getRange(1,2);
while( cell1.getValue() != ""){
if(cell1.getValue() == r && cell2.getValue() == c){
list.deleteRow(i);
}
i++;
cell1=list.getRange(i,1);
cell2=list.getRange(i,2)
}
}
addtime()为位置存储在列表中的所有单元格增加活动单元格值。
function addtime(){
var s1=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var s2=SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
var r,c,value,n;
for(n=1;n<=60;n++)
{
var i=1;
var cell=s2.getRange(1,1);
var cell1=s2.getRange(1,2);
while(cell.getValue()!="")
{
r=cell.getValue();
c=cell1.getValue();
cell3=s1.getRange(r,c);
value=cell3.getValue();
cell3.setValue(value+1);
i++;
cell=s2.getRange(i,1);
cell1=s2.getRange(i,2);
}
}
}
答案 0 :(得分:0)
您应该创建一个与项目关联的自定义脚本,编写您需要的功能,然后在工作表更改时设置触发器:
您可以在此处找到有关自定义脚本功能的更多信息:https://developers.google.com/apps-script/guides/sheets/functions