2017-04-19 4 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

以下の私の完全なコードは、[OK]を見える参照、これだけにあなたの式を変更してみてください:

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

ありがとうございました!私は実際にコードを試してみましたが、うまくいきませんでした。あなたの返信によって、私のコードを二重にチェックされました。今はうまく働いている!! :) – rei123

+0

@ rei123よろしくお願いします。それが固定されていることを知って良い:) –