2017-08-15 47 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

謝謝。這工作。 –

相關問題