Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default Deleting rows older than current date and inserting a new row

I have a workbook which contains a worksheet that has project data, including
project end date. Users update the sheet with current and projected
projects. I have written a macro to remove entries whose end date (in column
"G") are older than the current date.

The macro as written works, however when I run the macro it inserts a blank
row for every project listed in the spreadsheet. How do I get it to insert a
new row only when it deletes a row? And how do I make sure that the new,
inserted row is at the bottom of the formatted data (which ends at row 31)?

Sub DeleteOldRows()
Dim LastRow As Long, xR As Long
With ActiveSheet
LastRow = .Cells(Rows.Count, "G").End(xlUp).Row
For xR = LastRow To 6 Step -1
If .Cells(xR, "G") < Date Then _
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert
Next xR
End With

End Sub

Thanks for your help!
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,441
Default Deleting rows older than current date and inserting a new row

Dan,

Change

If .Cells(xR, "G") < Date Then _
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert

to

If .Cells(xR, "G") < Date Then
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert
end if


HTH,
Bernie
MS Excel MVP


"Dan E." wrote in message
...
I have a workbook which contains a worksheet that has project data, including
project end date. Users update the sheet with current and projected
projects. I have written a macro to remove entries whose end date (in column
"G") are older than the current date.

The macro as written works, however when I run the macro it inserts a blank
row for every project listed in the spreadsheet. How do I get it to insert a
new row only when it deletes a row? And how do I make sure that the new,
inserted row is at the bottom of the formatted data (which ends at row 31)?

Sub DeleteOldRows()
Dim LastRow As Long, xR As Long
With ActiveSheet
LastRow = .Cells(Rows.Count, "G").End(xlUp).Row
For xR = LastRow To 6 Step -1
If .Cells(xR, "G") < Date Then _
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert
Next xR
End With

End Sub

Thanks for your help!



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default Deleting rows older than current date and inserting a new row

Bernie - did as suggested, now it will not add additional rows. It deletes
fine, but the add command doesn't seem to be executed.

OK, updated code:

Sub DeleteOldRows()
Dim LastRow As Long, xR As Long
With ActiveSheet
LastRow = .Cells(Rows.Count, "G").End(xlUp).Row
For xR = LastRow To 6 Step -1
If .Cells(xR, "G") < Date Then
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert
End If
Next xR
End With

End Sub


"Bernie Deitrick" wrote:

Dan,

Change

If .Cells(xR, "G") < Date Then _
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert

to

If .Cells(xR, "G") < Date Then
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert
end if


HTH,
Bernie
MS Excel MVP


"Dan E." wrote in message
...
I have a workbook which contains a worksheet that has project data, including
project end date. Users update the sheet with current and projected
projects. I have written a macro to remove entries whose end date (in column
"G") are older than the current date.

The macro as written works, however when I run the macro it inserts a blank
row for every project listed in the spreadsheet. How do I get it to insert a
new row only when it deletes a row? And how do I make sure that the new,
inserted row is at the bottom of the formatted data (which ends at row 31)?

Sub DeleteOldRows()
Dim LastRow As Long, xR As Long
With ActiveSheet
LastRow = .Cells(Rows.Count, "G").End(xlUp).Row
For xR = LastRow To 6 Step -1
If .Cells(xR, "G") < Date Then _
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert
Next xR
End With

End Sub

Thanks for your help!




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,441
Default Deleting rows older than current date and inserting a new row

Dan,

Sure, it is inserting rows - they're just blank. Insert the numbers 1
through 45 in column A (or any other blank column) to see what it does.

But what row should be copied? Perhaps, change to this, to copy the current
31st row, and increment the date in column G:

Sub DeleteOldRows2()
Dim LastRow As Long, xR As Long

LastRow = Cells(Rows.Count, "G").End(xlUp).Row
For xR = LastRow To 6 Step -1
If Cells(xR, "G") < Date Then
Rows(31).EntireRow.Copy
Rows(31).Insert Shift:=xlDown
Rows(xR).EntireRow.Delete
Range("G31").Value = Range("G30").Value + 1
End If
Next xR

End Sub

Note that With Activesheet is Excel's default, and is rarely needed.

HTH,
Bernie
MS Excel MVP



"Dan E." wrote in message
...
Bernie - did as suggested, now it will not add additional rows. It
deletes
fine, but the add command doesn't seem to be executed.

OK, updated code:

Sub DeleteOldRows()
Dim LastRow As Long, xR As Long
With ActiveSheet
LastRow = .Cells(Rows.Count, "G").End(xlUp).Row
For xR = LastRow To 6 Step -1
If .Cells(xR, "G") < Date Then
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert
End If
Next xR
End With

End Sub


"Bernie Deitrick" wrote:

Dan,

Change

If .Cells(xR, "G") < Date Then _
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert

to

If .Cells(xR, "G") < Date Then
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert
end if


HTH,
Bernie
MS Excel MVP


"Dan E." wrote in message
...
I have a workbook which contains a worksheet that has project data,
including
project end date. Users update the sheet with current and projected
projects. I have written a macro to remove entries whose end date (in
column
"G") are older than the current date.

The macro as written works, however when I run the macro it inserts a
blank
row for every project listed in the spreadsheet. How do I get it to
insert a
new row only when it deletes a row? And how do I make sure that the
new,
inserted row is at the bottom of the formatted data (which ends at row
31)?

Sub DeleteOldRows()
Dim LastRow As Long, xR As Long
With ActiveSheet
LastRow = .Cells(Rows.Count, "G").End(xlUp).Row
For xR = LastRow To 6 Step -1
If .Cells(xR, "G") < Date Then _
Rows(xR).EntireRow.Delete
Rows(31).EntireRow.Insert
Next xR
End With

End Sub

Thanks for your help!






  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default Deleting rows older than current date and inserting a new row

Bernie,

Appreciate the tip. I did what you said and realized that I was inserting
the new rows outside of my formatted area, that's why it looked like it
wasn't working. Then I realized I could use the LastRow variable to insert
after the last bit of data in my table. And I used the with ActiveSheet just
to keep anything unexpected from happening :)

Final code below for future use:

Sub DeleteOldRows()
Dim LastRow As Long, xR As Long
With ActiveSheet
LastRow = .Cells(Rows.Count, "G").End(xlUp).Row
For xR = LastRow To 6 Step -1
If .Cells(xR, "G") < Date Then
Rows(xR).EntireRow.Delete
Rows(LastRow).EntireRow.Insert
End If
Next xR
End With

End Sub

"Bernie Deitrick" wrote:

Dan,

Sure, it is inserting rows - they're just blank. Insert the numbers 1
through 45 in column A (or any other blank column) to see what it does.

But what row should be copied? Perhaps, change to this, to copy the current
31st row, and increment the date in column G:

Sub DeleteOldRows2()
Dim LastRow As Long, xR As Long

LastRow = Cells(Rows.Count, "G").End(xlUp).Row
For xR = LastRow To 6 Step -1
If Cells(xR, "G") < Date Then
Rows(31).EntireRow.Copy
Rows(31).Insert Shift:=xlDown
Rows(xR).EntireRow.Delete
Range("G31").Value = Range("G30").Value + 1
End If
Next xR

End Sub

Note that With Activesheet is Excel's default, and is rarely needed.

HTH,
Bernie
MS Excel MVP




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
CF goes crazy when deleting/inserting rows DoubleZ Excel Discussion (Misc queries) 1 October 2nd 08 09:33 PM
Inserting current date pdaws Excel Worksheet Functions 8 September 25th 08 12:37 AM
I want any date 90 days or older from current date change color Big Abalone Excel Worksheet Functions 5 April 23rd 06 05:01 AM
Inserting Data Beneath Current Rows Jasper Excel Programming 3 February 21st 05 03:10 PM
Deleting 3 rows when current row number is unknown Joe[_31_] Excel Programming 1 May 20th 04 06:41 AM


All times are GMT +1. The time now is 04:00 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"