ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   improve DeleteBlankRows() (https://www.excelbanter.com/excel-programming/355711-improve-deleteblankrows.html)

Bucky[_2_]

improve DeleteBlankRows()
 
I was using Pearson's DeleteBlankRows() function, but I found a minor
issue. The problem is that if your sheet has blank rows at the top,
they don't get deleted. I believe the problem is that

Set Rng = ActiveSheet.UsedRange.Rows

does not include the blank rows at the top (since they are not
considered "UsedRange"). I think the fix is to modify the Set Rng line
to include those blank rows. I'm not familiar with the objects and
properties, so can someone help me come up with the most elegant way to
do this? Conceptually, this is what I want to do:

Set Rng = ActiveSheet.(A1 to LastCellOfUsedRange).Rows


http://www.cpearson.com/excel/deleti...eleteBlankRows


Ron de Bruin

improve DeleteBlankRows()
 
Hi Bucky

Try this one


Sub Example1()
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long

With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

Firstrow = ActiveSheet.UsedRange.Cells(1).Row
Lastrow = ActiveSheet.UsedRange.Rows.Count + Firstrow - 1

With ActiveSheet
.DisplayPageBreaks = False
For Lrow = Lastrow To 1 Step -1

If Application.CountA(.Rows(Lrow)) = 0 Then .Rows(Lrow).Delete
'This will delete the row if the whole row is empty (all columns)

Next
End With

ActiveWindow.View = ViewMode
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With

End Sub


--
Regards Ron de Bruin
http://www.rondebruin.nl


"Bucky" wrote in message oups.com...
I was using Pearson's DeleteBlankRows() function, but I found a minor
issue. The problem is that if your sheet has blank rows at the top,
they don't get deleted. I believe the problem is that

Set Rng = ActiveSheet.UsedRange.Rows

does not include the blank rows at the top (since they are not
considered "UsedRange"). I think the fix is to modify the Set Rng line
to include those blank rows. I'm not familiar with the objects and
properties, so can someone help me come up with the most elegant way to
do this? Conceptually, this is what I want to do:

Set Rng = ActiveSheet.(A1 to LastCellOfUsedRange).Rows


http://www.cpearson.com/excel/deleti...eleteBlankRows




Bucky[_2_]

improve DeleteBlankRows()
 
Ron de Bruin wrote:
Firstrow = ActiveSheet.UsedRange.Cells(1).Row
Lastrow = ActiveSheet.UsedRange.Rows.Count + Firstrow - 1


Thanks, I basically used that idea. But I wanted to keep the rest of
the code intact, so this is the section that sets the range from A1 to
the last used cell.

lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell) .Row
lastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell) .Column
Set Rng = ActiveSheet.Range(Cells(1, 1), Cells(lastRow, lastCol))



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

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