2017-03-16 112 views
1

下面的代码用于根据输入的第一个日期递减日期,并且如果填充了B列。由于导入到Excel的数据非常大,所以这个计算现在导致我的excel滞后。有没有办法加快它?导致excel滞后的VBA代码

For i = 1 To rowNow - 3 

newDate = DateAdd("d", -i, oldDate) 

For Each Cell In Range("A:A").Cells 

If IsEmpty(Cell) = True And IsEmpty(Range("B:B")) = False Then Cell.Value = newDate: Exit For 

Next 
Next 
+0

为了您的每次循环你可能检查百万个细胞 - 真的有必要吗? – SJR

+0

@SJR对不起,我有点新vba。你的意思是For Each功能是否造成这种情况?我确实试图改变这一点,但是,它不会减少日期,如果我不使用该功能 – rei123

+0

是你的内部循环 - 无论如何看到两个建议的解决方案下面。 – SJR

回答

2

也许这取决于什么在列B:

For i = 1 To rowNow - 3 
    newDate = DateAdd("d", -i, oldDate) 
    With Range("A:A") 
     On Error Resume Next 
     Intersect(.SpecialCells(xlCellTypeBlanks), .Offset(, 1).SpecialCells(xlCellTypeConstants).Offset(, -1))(1).Value = newDate 
    End With 
Next i 
+0

谢谢!这工作完美! – rei123