0

次の日付と時刻を比較するための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

問題は、現在の日付と時刻の値を次の日付と時刻の値と比較すると、VBAウォッチでは値が同じであっても、データと時刻が同じではないとExcelが判断する場合があることです。このチェックは、各タイムスタンプの間に3分間隔で1か月間実行する必要があります。これらのタイムスタンプの横にデータエントリがあります。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

サブ終了

4

1 に答える 1

0

関数を使用してdateadd日付を操作する必要があります。

だから、どこにでもdate + min3変更してくださいDateAdd("n", 3, date)

于 2012-08-02T15:46:59.417 に答える