将昨天的日期添加到单元格

时间:2018-02-14 10:13:22

标签: excel vba excel-vba

我有一份报告,我每隔一天都会更新一次。我想写一个更新第一行(其中包含日期)的公式,以便将日期更新到昨天的日期。

这是我到目前为止编写的代码:

Sub Update_Newest_Day_Conversions()

    Worksheets("CPC - Conversions DoD").Range("A1").End(xlToRight).Select

    MyDate = Date

    While ActiveCell.Value < MyDate
        ActiveCell.Copy ActiveCell.Offset(0, 1)
        ActiveCell.Offset(0, 1).Select
    Wend

End Sub

不幸的是,我无法弄清楚如何为每个新列添加日期更新的部分。这就是它最终看起来的方式(因为日期保持不变,循环显然不会停止):

enter image description here

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:2)

试试这个:

Sub UpdateNewestDayConversions()

    Dim selectedRange   As Range
    Dim MyDate          As Date
    Dim myCell          As Range

    With Worksheets("CPC - Conversions DoD")
        Set selectedRange = .Range(.Cells(1, 1), .Cells(1, 1).End(xlToRight))
    End With        

    MyDate = Date - 1

    For Each myCell In selectedRange
        If IsDate(myCell) Then
            If DateSerial(Year(myCell), Month(myCell), Day(myCell)) < MyDate Then
                myCell = DateAdd("d", 1, myCell)
            End If
        Else
            MsgBox "Check " & myCell.Address & " , it is not a valid date!"
        End If
    Next myCell

End Sub

此代码中包含哪些内容:

  • 它不使用Select;
  • 遍历第一行中的所有单元格;
  • 检查单元格是否为有效日期,并告知您是否属于这种情况;
  • 向您展示如何使用DateAdd(),这是一个很好的功能;
  • 仅比较单元格的日期,而不是小时和秒数与DateSerial()的使用情况(请参阅@Rafalon的评论);

答案 1 :(得分:0)

我实际上是自己得到的,万一有人感兴趣,这就是代码:

window.EventBus = new Vue();

答案 2 :(得分:0)

问题是您始终复制相同的日期,因此日期将始终小于当前日期。你可以尝试这样的事情:

While ActiveCell.Value < MyDate
    olddate = ActiveCell.Value
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = olddate + 1
Wend

建议不要使用ActiveCell,如果您有兴趣请看一下:How to avoid using Select in Excel VBA

答案 3 :(得分:0)

试试这个:

Sub Update_Newest_Day_Conversions()
    Dim col As Integer

    col = Range("A1").End(xlToRight).Column

    While Cells(1, col) < VBA.Date() - 1
        Cells(1, col).Offset(0, 1) = Cells(1, col) + 1
        col = col + 1
    Wend
End Sub

答案 4 :(得分:0)

试试这个

  Sub Update_Newest_Day_Conversions()

   Worksheets("CPC - Conversions DoD").Range("A1").End(xlToRight).Select
   Diff_Date = Date - ActiveCell.Value

   For i = 1 To Diff_Date - 1
       ActiveCell.Offset(0, 1).Value = ActiveCell.Value + 1
       ActiveCell.Offset(0, 1).Select
   Next

  End Sub