VBA过去一个月到本月之后的两个月

我试图让VBA更多,因为它允许更多的自由。 我想弄清楚的是,我怎样才能做一个VBA过滤一列,只显示仅在上个月,当前月份和未来两个月内出现的值。

我知道我可以使用xlFilterLastMonth,但现在我仍然只是录制macros,然后改变它们以适合我的更具体的需求。 我可以find使用xlFilterNextMonth或xlFilterLastMonth的单数filter。 但是我找不到任何我想找的东西。

这是我目前的macros:

Sub BASICPQS() ' ' BASICPQS Macro ' ' Sheets("PRODUCTION").Range("$A$1:$AA$146").AutoFilter Field:=9, Operator:= _ xlFilterValues, Criteria2:=Array(1, "3/31/2016", 1, "4/27/2016") ActiveWindow.SmallScroll Down:=-18 End Sub 

任何帮助,将不胜感激。 谢谢。

假设我们有这样的数据:

 Dates 2/27/2016 5/28/2016 1/30/2016 5/3/2016 2/13/2016 4/29/2016 2/3/2016 7/5/2016 5/23/2016 3/11/2016 7/3/2016 2/5/2016 5/4/2016 6/20/2016 6/26/2016 7/14/2016 5/9/2016 1/26/2016 2/14/2016 3/9/2016 4/1/2016 2/18/2016 3/7/2016 

A列中,我们希望在以下位置显示date:

  • 上个月
  • 这个月
  • 提前一个月
  • 提前两个月

这些date大于或等于3/1/2016,如果今天是2016年4月20日,则小于或等于6/30/2016。

考虑:

 Sub Macro1() Dim d1 As Date, d2 As Date Dim cr1 As String, cr2 As String d1 = DateSerial(Year(Now), Month(Now) - 1, 1) d2 = DateSerial(Year(Now), Month(Now) + 3, 0) MsgBox d1 & vbCrLf & d2 MsgBox CLng(d1) & vbCrLf & CLng(d2) cr1 = ">=" & CStr(CLng(d1)) cr2 = "<=" & CStr(CLng(d2)) ActiveSheet.Range("$A$1:$A$24").AutoFilter Field:=1, Criteria1:=cr1, _ Operator:=xlAnd, Criteria2:=cr2 End Sub 

结果:

在这里输入图像说明
警告

如果今天是一月份或十二月份,你必须进一步testing它是否有效。 也就是说,代码可以outlook明年还是回到上一年。