2017-04-19 62 views
1

首先,道歉爲我的英語。我工作的東西非常類似於郵政Macro - delete rows based on dateVBA月()函數

但我的日期數據是相反的順序,它從最新到最舊排序。

由Dan Wagner提供的代碼沒有爲我工作,因爲當我運行代碼它沒有做任何事情。

我有一個代碼在這裏工作正常,如果我手動設置月份小於值。 .Range("B2").Resize(Lastrow - 1).Formula = "=AND(MONTH(A2)<>4)"

如果A列中的日期月份不是當前月份,我想讓代碼刪除行。所以我試了.Range("B2").Resize(Lastrow - 1).Formula = "=AND(MONTH(A2)<>Month(Date))"的代碼,但它只刪除我的標題。

所以我想知道是否有任何可以改變月份(日期)功能的數字?或者如果還有其他的最好的方法呢? 看到我下面

Sub ProcessData2() 
    Dim rng As Range 
    Dim Lastrow As Long 
    Dim i As Long 

    With ActiveSheet 

     Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row 
     .Columns(2).Insert 
     .Range("B1").Value = "tmp" 
     .Range("B2").Resize(Lastrow - 1).Formula = "=AND(MONTH(A2)<>Month(Date))" 
     Set rng = .Range("A1").Resize(Lastrow, 2) 
     rng.AutoFilter Field:=2, Criteria1:="=TRUE" 
     On Error Resume Next 
     Set rng = .Range("B2").Resize(Lastrow - 1).SpecialCells(xlCellTypeVisible) 
     On Error GoTo 0 
     If Not rng Is Nothing Then rng.EntireRow.Delete 
     .Columns(2).Delete 
    End With 
End Sub 

回答

0

完整的代碼看起來沒問題,只要嘗試改變你的公式是:

.Range("B2").Resize(Lastrow - 1).Formula = "=MONTH(A2)<>MONTH(TODAY())" 
+1

謝謝!我實際上已經嘗試了代碼,它並沒有工作,你的回覆只是讓我重新檢查我的代碼,並發現有「)」錯過!現在它的工作很好! :) – rei123

+0

@ rei123歡迎您。很高興知道它是固定的:) –