2017-08-15 9 views
0

日報のマクロを記録しました。有効期限が異なる新しいレポートを作成すると、記録されたマクロに示されている特定のものだけがキャプチャされます。特定の日付より小さい日付を選択する

セルD2(2011年8月1日)にある「カバレッジ期間より前のすべての日付」をキャプチャしたいと考えています。毎月その日付が現在のカバレッジ期間に変わります。

私の質問:Criteria2「アカウンティング登録ステム」と「アカウンティングReinst」については

  • :配列の代わりに(下記の日付だけで)、カバレッジ期間より短い日数を言うためのコードがありますセルD2?

  • シート全体を選択する別の方法はありますか?Rows("1:1000").Select

あらかじめご了承ください。 Nは、日付(だけでなく、日付のように見えるテキスト)、D2は、日付が含まれているセルを含む列を想定すると、

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

、あなたは変更される可能性が

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

ありがとうございます。これはうまくいった。 –

関連する問題