2017-08-15 66 views
0

我为我的日常报告记录了一个宏。当生成具有不同生效日期的新报告时,它只会捕获我记录的宏中指示的特定报告。选择小于特定日期的日期

我想改为捕获“覆盖期限之前的所有日期”,这在D2单元格中(2017年8月1日)。该日期的每个月都会更改为当前的覆盖期。

我的问题:

  • Criteria2“科目登记”和“科目Reinst”:除了阵列(只有下面的日期),有没有代码说日期小于保险期内在单元格D2?

  • 是否有另一种方式来选择整个表而不是:Rows("1:1000").Select

我很想事先感谢你。

Option Explicit 

Sub AAHDAILY() 
' 
' AAHDAILY Macro 
' 
    Sheets("original data").Select 
    ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=12, Criteria1:= _ 
     "ACCT ENROLL" 
    ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=14, Operator:= _ 
     xlFilterValues, Criteria2:=Array(0, "10/1/2015", 0, "6/1/2014", 0, "4/1/2013", 0, _ 
     "1/1/2007") 
    Rows("1:1000").Select 
    Selection.Copy 
    Sheets.Add After:=ActiveSheet 
    ActiveSheet.Paste 
    Range("E15").Select 
    ActiveSheet.Name = "Retro Enrolls" 
' 
    Sheets("original data").Select 
    ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=12, Criteria1:= _ 
     "ACCT REINST" 
    ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=14, Operator:= _ 
     xlFilterValues, Criteria2:=Array(0, "11/1/2015") 
    Rows("1:1000").Select 
    Selection.Copy 
    Sheets.Add After:=ActiveSheet 
    ActiveSheet.Paste 
    Range("F29").Select 
    ActiveSheet.Name = "Retro Reinstates" 
End Sub 

回答

0

假设N列包含日期(和看起来像日期不只是文本)和该小区D2还包含一个日期,你可以改变

ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=14, Operator:= _ 
    xlFilterValues, Criteria2:=Array(0, "10/1/2015", 0, "6/1/2014", 0, "4/1/2013", 0, _ 
    "1/1/2007") 

ActiveSheet.Range("$A$1:$AA$35").AutoFilter Field:=14, _ 
              Operator:=xlAnd, _ 
              Criteria1:="<" & ActiveSheet.Range("D2").Value2 

即该标准是小于单元格D2中日期的任何日期。


重构你的代码将使:

Option Explicit 

Sub AAHDAILY() 
' 
' AAHDAILY Macro 
' 
    'Use a "With" block to save typing 
    With Worksheets("original data").Range("$A$1:$AA$35") 
     .AutoFilter Field:=12, _ 
        Criteria1:="ACCT ENROLL" 
     .AutoFilter Field:=14, _ 
        Operator:=xlAnd, _ 
        Criteria1:="<" & .Range("D2").Value2 
     'Create a new worksheet and give it a name 
     Worksheets.Add(After:=Worksheets("original data")).Name = "Retro Enrolls" 
     'Copy the entire range to the new worksheet (will only copy visible rows) 
     .Copy Worksheets("Retro Enrolls").Range("A1") 
' 
     .AutoFilter Field:=12, _ 
        Criteria1:="ACCT REINST" 
     .AutoFilter Field:=14, _ 
        Operator:=xlFilterValues, _ 
        Criteria1:=Array(0, "11/1/2015") 
     Worksheets.Add(After:=Worksheets("original data")).Name = "Retro Reinstates" 
     .Copy Worksheets("Retro Reinstates").Range("A1") 

     'Switch off the filter 
     .AutoFilter 
    End With 
End Sub 
+0

太谢谢你了。我明天早上去上班的时候会试试。 –

+0

谢谢。这工作。 –