VBA代码是实现筛选从当前时间起7天之内数据,但是运行后筛选不出来,不知道问题在哪里出错了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA代码是实现筛选从当前时间起7天之内数据,但是运行后筛选不出来,不知道问题在哪里出错了相关的知识,希望对你有一定的参考价值。

代码如下
Sub 未联系()
Dim ndate As Date
Dim hdate As Date
Dim i As Integer
Dim j As Integer
i = DateDiff("D", hdate, ndate)
j = 7
If i <= j Then
Range("A1:C16").AutoFilter Field:=1, Criteria1:=">=hdate", Operator:=xlAnd, Criteria2:="<=ndate"
End If
End Sub
其中“ndate”是当前时间,”hdate"是距当前日期7天的日期,感觉问题出现在第9行,但不知道怎么修改,求高手帮忙修改。

如图如果说是今天27日筛选,想筛选7天之前的日期,怎么实现?

参考技术A Range("A1:C16").AutoFilter Field:=1, Criteria1:=">=" & hdate, Operator:=xlAnd, Criteria2:="<=" & ndate追问

不行啊,还是一样的结果!

追答

我就你贴出来的代码问个问题:
hdate和ndate好像没有语句可以给它们赋值?简单来说,这2个变量根本就是空值。

追问

如果说想实现我说的功能,该怎么改写,刚刚初学的还没入门呢,能否帮忙修改,发一个完整的代码给我,谢谢!

追答

Sub 未联系()
Dim ndate As Date
Dim hdate As Date
Dim i As Integer
Dim j As Integer
ndate = Int(Now())
hdate = Int(Now() - 7)
'j = 7
'i = DateDiff("D", hdate, ndate)
'If i =" & hdate, Operator:=xlAnd, Criteria2:="<=" & ndate
'End If
End Sub

本回答被提问者采纳

VBA 根据日期筛选数据

筛选两个日期间的全部数据

Dim a, b, c
a = Format(Date, "yyyy/m") '当前年月日

MsgBox a  '显示日期时间

'当前月份加4
b = DateAdd("m", 4, a)

Debug.Print b

Dim Rng As Range, arr As Variant
Dim EndRow As Long, EndCol As Long
Dim Rngtime As Range
With Sheets("PM")

     '获取A列最后一行(非空行)的行号
        EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
       
        '获取第一行最后一列(非空列)的列号
        EndCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
       
        '保存数据
        Set Rng = .Range(.Cells(1, 1), .Cells(EndRow, EndCol))
        '存入数组
        arr = Rng.Value
        'end time
'        Set Rngtime = .Range(.Cells(1, 3), .Cells(EndRow, 3))
 End With
       
        
        
'    循环筛选符合条件的数据
'
'    重新声明数组,用于保存筛选出来的数据
    ReDim Brr(1 To EndCol, 1 To 1)
'    初始化筛选结果的数量
    n = 0
    For i = LBound(arr) + 1 To UBound(arr)
        If DateDiff("m", a, CDate(arr(i, 3))) >= 0 And DateDiff("m", CDate(arr(i, 3)), b) > 0 Then
            '时间在 Arr=Rng.Value的时候已经自动转为TimeValue
            n = n + 1
            ReDim Preserve Brr(1 To EndCol, 1 To n)
            For j = 1 To EndCol
              Brr(j, n) = arr(i, j)
            Next j
        End If
    Next i

以上是关于VBA代码是实现筛选从当前时间起7天之内数据,但是运行后筛选不出来,不知道问题在哪里出错了的主要内容,如果未能解决你的问题,请参考以下文章

excel vba中如何获取筛选数据的正确行号

如何用vba实现数据透视表自动筛选

VBA 根据日期筛选数据

VBA 根据日期筛选数据

VBA 根据日期筛选数据

怎么查DB2数据库中,虽是varchar型的2个字段,但是实际存的是日期,俩个字段之间相差7天之内的数据。