ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Special Cells to Loop back (https://www.excelbanter.com/excel-programming/286512-special-cells-loop-back.html)

Hafeez Esmail

Special Cells to Loop back
 
I've read (in the forums) that it is best to delete from
bottom up and I use this technique, however I'm having a
bit of trouble setting up a for loop for one of my lists.

I have a filtered list and have been looping through the
code (from top to bottom) by the following.

'Row one is the header row
intFrstRow = Range("A1").End(xlDown).Row
intLastRow = Range("A" & intFrstRow).End(xlDown).Row

'Create range
Range("A" & intFrstRow &, "A" & intLastRow).SpecialCells
(xlCellTypeVisible).Select

I tried setting the range the other way (intLastRow,
intFirstRow) but that didn't help.

The only method I can think of (one given by a helpful
MVP) is using a do loop to start at the end and count
backwards until hits a visible row.
Is there a faster method than this?

Thanks
Hafeez Esmail

J.E. McGimpsey

Special Cells to Loop back
 
One way:

This sets up a range of rows to delete, then deletes all the
unwanted lines at once:


Dim rDelete As Range
Dim rCell As Range
On Error Resume Next 'in case no visible cells
For Each rCell In Range("A2:A" & Range("A" & _
Rows.Count).End(xlUp).Row).SpecialCells(xlCellType Visible)
If rCell.Value = 1 Then 'or whatever criteria you use
If rDelete Is Nothing Then
Set rDelete = rCell
Else
Set rDelete = Union(rDelete, rCell)
End If
End If
Next rCell
On Error GoTo 0
If Not rDelete Is Nothing Then rDelete.EntireRow.Delete



In article ,
"Hafeez Esmail" wrote:

I've read (in the forums) that it is best to delete from
bottom up and I use this technique, however I'm having a
bit of trouble setting up a for loop for one of my lists.

I have a filtered list and have been looping through the
code (from top to bottom) by the following.

'Row one is the header row
intFrstRow = Range("A1").End(xlDown).Row
intLastRow = Range("A" & intFrstRow).End(xlDown).Row

'Create range
Range("A" & intFrstRow &, "A" & intLastRow).SpecialCells
(xlCellTypeVisible).Select

I tried setting the range the other way (intLastRow,
intFirstRow) but that didn't help.

The only method I can think of (one given by a helpful
MVP) is using a do loop to start at the end and count
backwards until hits a visible row.
Is there a faster method than this?

Thanks
Hafeez Esmail


Tom Ogilvy

Special Cells to Loop back
 
Dim rng as Range
set rng = ActiveSheet.Autofilter.Range.Columns(1)
' exclude the header row
set rng = rng.offset(1,0).Resize(rng.rows.count-1)
rng.SpecialCells(xlvisible).Select

--
Regards,
Tom Ogilvy

"Hafeez Esmail" wrote in message
...
I've read (in the forums) that it is best to delete from
bottom up and I use this technique, however I'm having a
bit of trouble setting up a for loop for one of my lists.

I have a filtered list and have been looping through the
code (from top to bottom) by the following.

'Row one is the header row
intFrstRow = Range("A1").End(xlDown).Row
intLastRow = Range("A" & intFrstRow).End(xlDown).Row

'Create range
Range("A" & intFrstRow &, "A" & intLastRow).SpecialCells
(xlCellTypeVisible).Select

I tried setting the range the other way (intLastRow,
intFirstRow) but that didn't help.

The only method I can think of (one given by a helpful
MVP) is using a do loop to start at the end and count
backwards until hits a visible row.
Is there a faster method than this?

Thanks
Hafeez Esmail




Hafeez Esmail

Special Cells to Loop back
 
Thanks guys :-)
You're the best!

-----Original Message-----
Dim rng as Range
set rng = ActiveSheet.Autofilter.Range.Columns(1)
' exclude the header row
set rng = rng.offset(1,0).Resize(rng.rows.count-1)
rng.SpecialCells(xlvisible).Select

--
Regards,
Tom Ogilvy

"Hafeez Esmail" wrote in message
...
I've read (in the forums) that it is best to delete from
bottom up and I use this technique, however I'm having a
bit of trouble setting up a for loop for one of my

lists.

I have a filtered list and have been looping through the
code (from top to bottom) by the following.

'Row one is the header row
intFrstRow = Range("A1").End(xlDown).Row
intLastRow = Range("A" & intFrstRow).End(xlDown).Row

'Create range
Range("A" & intFrstRow &, "A" & intLastRow).SpecialCells
(xlCellTypeVisible).Select

I tried setting the range the other way (intLastRow,
intFirstRow) but that didn't help.

The only method I can think of (one given by a helpful
MVP) is using a do loop to start at the end and count
backwards until hits a visible row.
Is there a faster method than this?

Thanks
Hafeez Esmail



.



All times are GMT +1. The time now is 03:37 PM.

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