组合宏来过滤今天和明天的日期

问题描述 投票:0回答:1

如何组合这两个宏?

Sub Macro7()
    With Worksheets("STG_SB_OPICS_DTL")
        With .Range(.Cells(4, "D"), .Cells(.Rows.Count, "D").End(xlUp))
            .AutoFilter field:=1, Criteria1:=xlFilterToday, Operator:=xlFilterDynamic
        End With
    End With
End Sub
    
Sub Macro8()
    With Worksheets("STG_SB_OPICS_DTL")
        With .Range(.Cells(4, "D"), .Cells(.Rows.Count, "D").End(xlUp))
            .AutoFilter field:=1, Criteria1:=xlFilterTomorrow, Operator:=xlFilterDynamic
        End With
    End With
End Sub
    
Sub TodayTomorrow()
    Call Macro7
    Call Macro8
End Sub

我想要

TodayTomorrow()
排序到今天和明天的日期,而不仅仅是今天。

excel vba
1个回答
0
投票

如果您想过滤今天和明天的日期,那么您可以尝试这个。

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim lRow As Long
    Dim rng As Range
    Dim TodaysDate As Date
    Dim TomorrowsDate As Date
    
    '~~> Today's date
    TodaysDate = Date
    '~~> Tomorrow's date
    TomorrowsDate = DateAdd("d", 1, Date)
    
    '~~> Set this to the relevant worksheet
    Set ws = Worksheets("STG_SB_OPICS_DTL")
    
    With ws
        '~~> Remove any existing filter
        .AutoFilterMode = False
        
        '~~> Find last row in Col D
        lRow = .Range("D" & .Rows.Count).End(xlUp).Row
        
        '~~> Identify your filter range
        Set rng = .Range("D4:D" & lRow)
        
        '~~> Filter
        With rng
            .AutoFilter field:=1, _
            Criteria1:="=" & TodaysDate, _
            Operator:=xlOr, _
            Criteria2:="=" & TomorrowsDate
        End With
    End With
End Sub

截图

注意:如果您愿意,也可以使用

xlAnd
代替
xlOr
。在这种情况下,代码就变成了。

'~~> Filter
With rng
    .AutoFilter Field:=1, _
    Criteria1:=">=" & TodaysDate, _
    Operator:=xlAnd, _
    Criteria2:="<=" & TomorrowsDate
End With
© www.soinside.com 2019 - 2024. All rights reserved.