ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Removing Blank Rows? (https://www.excelbanter.com/excel-programming/302236-removing-blank-rows.html)

andycharger[_35_]

Removing Blank Rows?
 
Im writing a fiddly macro that seems to have a few problems with blan
rows.

Basically, my code is cycling through the rows in a spreadsheet an
deleting certain rows.

The code im using for this is :
Rows(n).Entirerow.Delete

Great!

Trouble is, i need to go through the rows at the end of the loop an
delete out all of the blank space rows left behind.

Im doing this as follows:


Code
-------------------

Lastrow = Activesheet.UsedRange.Rows - 1 + _
ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For r = Lastrow to 1 step - 1
If Application.CountA(Rows(r)) = 0 then Rows(r).delete
end if
next r

-------------------


Is there a better way of getting rid of the rows rather than looping
Its just my code is taking forever.

Cheer

--
Message posted from http://www.ExcelForum.com


Francesco Sblendorio

Removing Blank Rows?
 
I'd try this:

---------------------------------------
Lastrow = Activesheet.UsedRange.Rows - 1 + _
ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
r = Lastrow
Do While r = 1
If Application.CountA(Rows(r)) = 0 Then
Rows(r).delete
Else
r = r - 1
Loop



andycharger[_36_]

Removing Blank Rows?
 
But isnt this doing exactly what my code is doing?

I cannot see how that would speed it up

--
Message posted from http://www.ExcelForum.com


Jim Cone

Removing Blank Rows?
 
andycharger,

The code will not run the way you posted it.
1. The first line of your code has a syntax error.
Remove the "s" from the end of Rows so it looks like...

LastRow = Activesheet.UsedRange.Row - 1 + _
ActiveSheet.UsedRange.Rows.Count

2. The "End If" should be removed.

'-------------------------------------
Once the code runs, then you can probably speed it up
by finding the last row with data instead of using the last
row of the used range. The last row with data can be
determined by calling the following function like this...

LastRow = GetBottomRow(ActiveSheet)

'=================================================
' GetBottomRow() Function
' Aug 31, 2001 - Created by Jim Cone
' Returns the number of the last worksheet row with data.
' If the sheet is blank it returns 0.
'=================================================
Function GetBottomRow(ByRef TheSheet as Worksheet) As Long
On Error GoTo NoRow
If TheSheet.FilterMode Then TheSheet.ShowAllData
GetBottomRow = TheSheet.Cells.Find(what:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Exit Function
NoRow:
GetBottomRow = 0
End Function

'-------------------------------------------------------------

Regards,
Jim Cone
San Francisco, CA

"andycharger " wrote in message ...
Im writing a fiddly macro that seems to have a few problems with blank rows.
Basically, my code is cycling through the rows in a spreadsheet and
deleting certain rows.
The code im using for this is :
Rows(n).Entirerow.Delete
Great!
Trouble is, i need to go through the rows at the end of the loop and
delete out all of the blank space rows left behind.
Im doing this as follows:
Code:
--------------------

Lastrow = Activesheet.UsedRange.Rows - 1 + _
ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For r = Lastrow to 1 step - 1
If Application.CountA(Rows(r)) = 0 then Rows(r).delete
end if
next r
--------------------
Is there a better way of getting rid of the rows rather than looping?
Its just my code is taking forever.
Cheers




All times are GMT +1. The time now is 03:46 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com