Vba 只在下个月过滤

Vba 只在下个月过滤,vba,excel,Vba,Excel,我正在使用excel,其中包含所有月份的数据。如果我必须在当前工作月的几个月后进行筛选。那么,如何编写相同的代码 现在我在2月17日工作。我想过滤到2月17日。不包括2017年2月以后的所有月份 我的代码 ActiveSheet.Range("$A$:$AA" & LastRow2).AutoFilter FIELD:=18, Criteria1:=">=01/01/2006",Criteria2:="<=28/02/2017" ActiveSheet.Range($A$:

我正在使用excel,其中包含所有月份的数据。如果我必须在当前工作月的几个月后进行筛选。那么,如何编写相同的代码

现在我在2月17日工作。我想过滤到2月17日。不包括2017年2月以后的所有月份

我的代码

ActiveSheet.Range("$A$:$AA" & LastRow2).AutoFilter FIELD:=18, Criteria1:=">=01/01/2006",Criteria2:="<=28/02/2017"

ActiveSheet.Range($A$:$AA“&LastRow2)。自动筛选字段:=18,标准1:=“>=01/01/2006”,标准2:=”对于标准2,您可以通过日期获取今天的日期()函数将其转换为字符串使用mid()要仅获取月份和年份值…请基于月份值编写一个if函数以获取最后一个日期值…添加一个函数以检查年份的闰值,并将日期值添加到二月

 Month_1=datepart("m",date())
 year_1=datepart("yyyy",date())
 if month in (01,03,05,07,08,10,12) then
 last_day=31
 elseif month <> 02 then
 last_day=30
 else
 isLeapYear = (Month(DateSerial(Yr, 2, 29)) = 2)
 if isLeapYear = True then
 last_day=29
 else
 last_day=28
 end if
 end if
 criteria_2=cdate(last_day & "/" & Month_1 & "/" & year_1)
Month_1=datepart(“m”,date())
年份1=日期部分(“yyyy”,日期())
如果月份在(01,03,05,07,08,10,12)中,则
最后一天=31
如果是第二个月呢
最后一天=30
其他的
isLeapYear=(月(日期序列(年,2,29))=2)
如果isLeapYear=True,则
最后一天=29
其他的
最后一天=28
如果结束
如果结束
标准2=日期(最后一天、“/”月、“/”年)
将此变量添加为筛选器中的条件2…您将始终使用此代码获取当前月份的最后一天


我尚未测试代码。如果代码有错误,请原谅。

您可以尝试使用
工作表函数.EoMonth
获取当前月份的最后一天(或任何其他日期)

另外,尽量远离
ActiveSheet
,而使用完全限定对象


注意:在我的测试中,我发现如果我使用
Criteria2:=“=01/01/2006”,操作符:=xlAnd,Criteria2:=”听起来像是一个计划。现在,如果您愿意分享您的代码尝试,您在哪里需要我们的帮助,我们将尽力帮助您我的代码如下-ActiveSheet.Range($A$:$AA“&LastRow2)。自动筛选字段:=18,标准1:=“>=01/01/2006”,标准2:=”
ActiveSheet.Range(“A1:AA”&LastRow2)。自动筛选字段:=18,标准1:“>=01/01/2006“,Operator:=xlAnd,Criteria2:=”@Saran试着用DateSerial给你在下面得到的答案提供反馈,一个月的最后一天实际上是下个月的第0天。因此,要获得2月的最后一天,你可以使用
DateSerial(2017,3,0)
。要获得当月的最后一天,你可以使用
DateSerial(年(现在),月(现在)+1,0)
Option Explicit

Sub FilterNextTwoMonths()

Dim toDate As Date

' get the last date of the current month
toDate = WorksheetFunction.EoMonth(Date, 0)

With Worksheets("Sheet1") '<-- replace "Sheet1" with your sheet's name
    .Range("$A$:$AA" & LastRow2).AutoFilter Field:=18, Criteria1:=">=01/01/2006", Operator:=xlAnd, Criteria2:="<=" & CDbl(toDate)       
End With

End Sub