之前对表格单元格的读取及赋值用Range对象的Value2或Formula 属性,获取表格区域值的时候用Value() 方法获取,对于日期格式Value2或Formula 属性获取到的都是日期数字,还转换不过来,用Value() 方法读取单个单元格成功拿到日期,Value().toLocaleString();打印出的日期比源表格的时期超8小时,无法指定时区,最后用Value().toISOString();解决了。
function 景526() {
//设置工作表对象
var ws1 = ThisWorkbook.Worksheets('Sheet1');
//获取Sheet1页的行数放进数组
var arrow = new Array();
var st5LastRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row;
for(var j = 0 ; j < st5LastRow ; j++){
arrow[j]=j+1;
}
//在K列插入空白行
ws1.Range(Cells(1,12),Cells(st5LastRow,12)).EntireColumn.Insert(xlShiftToRight, false);
ws1.Cells(1,12).Value2 = "是否今日新增";
//对于时间比较,这里只能用Value()去获取值,用toISOString()去格式化时间,剩下的都是不对的,我试了一天
var arrow1 = new Array();
for (let x = 0; x < arrow.length-1; x++) {
//console.log("a"+arrow[x+1]);
var a = ws1.Range("K"+arrow[x+1]).Value().toISOString();
arrow1.push(a);
}
//比较时间
for (let yy = 2; yy < arrow1.length+2; yy++) {
var value = arrow1[yy-2];
var value1 = value.split('T');
var date = new Date().toISOString();
var date1 = date.split("T");
if(date1[0]==value1[0]){
ws1.Cells.Item(yy,12).Value2 = "是";
}else{
ws1.Cells.Item(yy,12).Value2 = "否";
}
}
//1秒后执行JIn521代码
//获取当前时间
let now = new Date();
let now_time = now.getTime();
//设置定时时间,1秒后执行
now.setTime(now_time+1000*1);
Application.OnTime(now.toLocaleString(),'JIn521');
}