View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Gary Brown Gary Brown is offline
external usenet poster
 
Posts: 178
Default Find Hidden rows and delete

it's only deleting the cell because you've Set MyRange = Range("A1:A10")
instead of A1:C10 or whatever. To get around it, change...
mcell.Rows.Delete
to
mcell.EntireRow.Delete

Here's a full subroutine.

'/======================================/
Public Sub FindHiddenAndLock()
Dim mCell As Range, MyRange As Range
Dim MyColumns As Range

On Error GoTo exit_Sub

Set MyRange = Range("A1:A20")
Set MyColumns = Range("A:E")

For Each mCell In MyRange
If mCell.Rows.Hidden = True Then
Application.DisplayAlerts = False
mCell.EntireRow.Delete
Application.DisplayAlerts = True
End If
Next mCell

For Each mCell In MyColumns
If mCell.Columns.Hidden = True Then
Application.DisplayAlerts = False
mCell.EntireColumn.Delete
Application.DisplayAlerts = True
End If
Next mCell

exit_Sub:
On Error Resume Next
Application.DisplayAlerts = True
Set MyColumns = Nothing
Set MyRange = Nothing
Exit Sub

End Sub
'/======================================/

--
HTH,
Gary Brown

If this post was helpful to you, please select ''YES'' at the bottom of the
post.



"ttbbgg" wrote:

I was given a macro by Sandy here which is not working exactly the way I
need. I need to be able to seek out first all rows that are Hidden and have
them deleted. When a row is deleted, the unhidden rows should move up. Then
I need the macro to look for hidden columns and do the same.

Issue with this macro: Since this is an mcell reference, it is only
deleting cells, I need entire rows, then columns deleted.
***
Sub FindHiddenAndLock()
Dim mcell, MyRange As Range
Set MyRange = Range("A1:A10")
For Each mcell In MyRange
If mcell.Rows.Hidden = True Then
mcell.Rows.Delete
End If
Next
End Sub
***