|
んー・・たぶん
>Range(Cells(3, 1), Cells(3, LC)).Resize(LR)
↓
Range(Cells(3, 1), Cells(3, LC)).Resize(LR + 1)
という修正が必要だったのでしょう。
あと数式を入れたままでソートなどすると、結果がおかしくなる可能性があるので、
計算の直後に値のみにしてしまう処理も組み込んでみます。
Sub Test()
Dim LR As Long, LC As Long
LR = Range("E65536").End(xlUp).Row - 3
LC = Range("IV3").End(xlToLeft).Column + 1
Application.ScreenUpdating = False
Cells(3, LC).Value = "Check"
On Error GoTo ELine
With Cells(4, LC).Resize(LR)
.Formula = "=IF($E4<TODAY(),""NO"",ROW())"
.Copy
.PasteSpecial xlPasteValues
.SpecialCells(2, 2).EntireRow.ClearContents
End With
Application.CutCopyMode = False
On Error GoTo 0
Range(Cells(3, 1), Cells(3, LC)).Resize(LR + 1) _
.Sort Key1:=Cells(3, LC), Order1:=xlAscending, _
Header:=xlYes, Orientation:=xlSortColumns
ELine:
Columns(LC).ClearContents
Application.ScreenUpdating = True
End Sub
|
|