添加缺少日期VBA

时间:2016-04-19 15:50:38

标签: excel vba excel-vba

我必须在一行中插入缺少的日期而不删除重复的日期(对于计费程序)。示例数据:

DATE
01/02/2016    
02/02/2016    
03/02/2016    
03/02/2016    
03/02/2016    
06/02/2016    
07/02/2016    
08/02/2016

我的代码无限循环并删除重复的日期。为什么会这样?

Sub InsertMissingDates()

Dim i As Long
Dim RowCount As Long

i = 4

Do
    If Cells(i, 1) + 1 <> Cells(i + 1, 1) Then
        Rows(i + 1).Insert
        Cells(i + 1, 1) = Cells(i, 1) + 1
    End If
    i = i + 1
Loop Until Cells(i + 1, 1) = "31.10.2016"

End Sub

1 个答案:

答案 0 :(得分:2)

以下是使用注释修改的代码,以解决您的问题

Sub InsertMissingDates()

Dim i As Long
Dim RowCount As Long

i = 4

Do
    'Use less then instead of <> so it doesn't flag duplicate cells
    If Cells(i, 1) + 1 < Cells(i + 1, 1) Then
        Rows(i + 1).Insert
        Cells(i + 1, 1) = Cells(i, 1) + 1
    End If
    'Second check to add value if the next row is blank
    If (Cells(i + 1, 1) = "") Then
        Cells(i + 1, 1) = Cells(i, 1) + 1
    End If

    i = i + 1
'Changed the loop function from cells(i+1,1) to cells(i,1) since you already
'incremented i
'Also made the date check slightly more robust with dateserial
Loop Until Cells(i, 1).Value >= DateSerial(2016, 1, 30)

End Sub