我尝试过TimeValue()并尝试使用excels分数来表示时间,我尝试了Hour Minutes函数及其组合

时间:2012-08-02 08:47:56

标签: vba

我无法获取VBA代码来比较以下日期和时间:

2012/05/01 00:00:00
2012/05/01 00:03:00
2012/05/01 00:06:00
2012/05/01 00:15:00
2012/05/01 00:18:00

给我下面的答案

2012/05/01 00:00:00
2012/05/01 00:03:00
2012/05/01 00:06:00
2012/05/01 00:09:00
2012/05/01 00:12:00
2012/05/01 00:15:00
2012/05/01 00:18:00

问题在于,如果我将当前日期和时间值与下一个日期和时间值进行比较,excel有时会认为数据和时间不一样,即使在VBA监视中值也是相同的。我必须整整一个月检查一次,每个时间戳之间间隔3分钟。这些时间戳旁边有数据条目。我能够创建从2012/05/01 00:00:00开始到月末结束的时间戳,但我需要它来填写数据集中缺少的条目。下面的代码有效,但只有部分时间如上所述。我尝试了一些不同的东西,但似乎没有任何作用。

感谢您的帮助

    Sub Insert_missing_3min()

'插入一行,其中包含缺少日期和时间戳的日期和时间,以及添加日期旁边的零。

Dim min3 As Date
Dim CurTime As Date
Dim CurCell As Date
Dim NextCell As Date

min3 = 3 / 24 / 60

If (Hour(ActiveCell) <> 0 Or Minute(ActiveCell) <> 0 Or Day(ActiveCell) <> 1) Then      'makes the start date the fisrt of the month at 00:00
  ActiveCell.EntireRow.Insert
  ActiveCell.Value = Year(ActiveCell.Offset(1, 0)) & "/" & Month(ActiveCell.Offset(1, 0)) & "/" & "1"

End If

Maand = Month(ActiveCell)

Do While IsDate(ActiveCell) And Month(ActiveCell) = Maand

        NextCell = DateAdd("n", TimeValue(ActiveCell.Offset(1, 0)), ActiveCell.Offset(1, 0))


        If (NextCell <> DateAdd("n", 3, ActiveCell) And NextCell > DateAdd("n", 3, ActiveCell)) Then
            ActiveCell.Offset(1).EntireRow.Insert
            ActiveCell.Offset(1, 0).Activate
            ActiveCell.Value = DateAdd("n", 3, ActiveCell.Offset(-1, 0))   '3 min time value in excell
            ActiveCell.Offset(0, 1).Value = 0                     ' Value in colum next to date 0
            With Selection.Interior                                 ' Highlight
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .Color = 65535
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
        Else
            ActiveCell.Offset(1, 0).Activate
        End If
Loop

End Sub

1 个答案:

答案 0 :(得分:0)

您应该使用dateadd函数来操作日期。

因此,只要您date + min3将其更改为DateAdd("n", 3, date)