首页 > 解决方案 > 删除某些时间 VBA

问题描述

我希望有人可以帮助我解决这个问题。我正在尝试删除 VBA 上 00:00:00 - 22:59:59 之间的任何值。

我使用以下方法将时间与日期分开:

ActiveCell.FormulaR1C1 = "=RIGHT(RC[1],8)"

例如,这给我留下了 00:27:37。

我已经搜索了很多答案,但找不到足够的解决方案。我尝试使用以下方法,但没有奏效:

Dim lr As Long, i As Long

lr = Cells(Rows.Count, "B").End(xlUp).Row

For i = lr To 1 Step -1
    If IsNumeric(Cells(i, "B")) And _
     Cells(i, "B").Value2 < TimeSerial(23, 0, 0) And _
     Cells(i, "B").Value2 <> "" Then
       Rows(i).EntireRow.Delete
    End If
Next i

先感谢您。

标签: vbaexcel

解决方案


Excel 中的日期和时间是数值,其中日期表示为整数(自 1900 年 1 月 1 日以来的天数),时间表示为数字的小数部分,范围在 0 (00:00) 之间并且 < 1 (24:00)

因此,您可以通过以下方式隔离组合日期/时间值的时间

vTime = vDateTime - Int(vDateTime)

然后,您查找的时间是 >= 23:00,在数字方面是 >= 23/24

例子:

Sub Find23()
Dim vTime As Date, vDateTime As Date

    vDateTime = #7/17/2018 11:00:00 PM#
    Debug.Print vDateTime

    vTime = vDateTime - Int(vDateTime)
    Debug.Print vTime

    If vTime >= 23 / 24 Then
        Debug.Print "it was late in the evening ..."
        ' do your stuff here
    End If

End Sub

在此处输入图像描述


推荐阅读