Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / New Users / June 2007

Tip: Looking for answers? Try searching our database.

Need help with Sub DeleteUnused Macro

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Steve - 18 Jun 2007 16:00 GMT
Hi,

I'm trying to run the subject macro from Debra Dalgliesh

at:
     http://www.contextures.on.ca/xlfaqApp.html#Unused

However, everytime I try and run the macro it gets hung up at this
line of the macro ".Columns.Delete".  I did the merged cell test and
there were no merged cells.  I'm running Microsoft Excel 2003 if that
helps.

Please advise,

Steve

Sub DeleteUnused()

Dim myLastRow As Long
Dim myLastCol As Long
Dim wks As Worksheet
Dim dummyRng As Range

For Each wks In ActiveWorkbook.Worksheets
 With wks
   myLastRow = 0
   myLastCol = 0
   Set dummyRng = .UsedRange
   On Error Resume Next
   myLastRow = _
     .Cells.Find("*", After:=.Cells(1), _
       LookIn:=xlFormulas, LookAt:=xlWhole, _
       SearchDirection:=xlPrevious, _
       searchorder:=xlByRows).Row
   myLastCol = _
     .Cells.Find("*", After:=.Cells(1), _
       LookIn:=xlFormulas, LookAt:=xlWhole, _
       SearchDirection:=xlPrevious, _
       searchorder:=xlByColumns).Column
   On Error GoTo 0

   If myLastRow * myLastCol = 0 Then
       .Columns.Delete
   Else
       .Range(.Cells(myLastRow + 1, 1), _
         .Cells(.Rows.Count, 1)).EntireRow.Delete
       .Range(.Cells(1, myLastCol + 1), _
         .Cells(1, .Columns.Count)).EntireColumn.Delete
   End If
 End With
Next wks

End Sub
Jim Rech - 18 Jun 2007 16:32 GMT
That line of code should only be run if the sheet is completely empty of
cell contents.  If that the case?  The delete should work in any case,
unless the sheet is protected of course.

Signature

Jim

| Hi,
|
[quoted text clipped - 49 lines]
|
| End Sub
Steve - 18 Jun 2007 16:55 GMT
> That line of code should only be run if the sheet is completely empty of
> cell contents.  If that the case?  The delete should work in any case,
[quoted text clipped - 54 lines]
> |
> | End Sub

Jim,

Your right, that my first sheet was protected.  It ran through after I
tried the code again on the unprotected sheet.  I have one more
question though.  Is there any way I can make this code work on
designated sheets only?  When it ran on the entire workbook, all of my
formulas (on a couple of the worksheets) change the cell references to
"#REV".

Thanks for your help.

Regards,

Steve
Don Guillett - 18 Jun 2007 17:46 GMT
One way
Sub selectedsheets()
myarray = Array("xxx", "YYY")
For Each sh In myarray
MsgBox Sheets(sh).Range("a1")
Next
End Sub

Signature

Don Guillett
SalesAid Software
dguillett1@austin.rr.com

>> That line of code should only be run if the sheet is completely empty of
>> cell contents.  If that the case?  The delete should work in any case,
[quoted text clipped - 69 lines]
>
> Steve
Jim Rech - 18 Jun 2007 18:00 GMT
Fleshing out Don's idea of doing it by name:

Sub TestClearSheets()
   ClearSheets Array("Sheet1", "Sheet2")
End Sub

Sub ClearSheets(ArrWS As Variant)
   For Each wks In ActiveWorkbook.Sheets(ArrWS)
     With wks
       myLastRow = 0
       myLastCol = 0
       Set dummyRng = .UsedRange
       On Error Resume Next
       myLastRow = _
         .Cells.Find("*", After:=.Cells(1), _
           LookIn:=xlFormulas, LookAt:=xlWhole, _
           SearchDirection:=xlPrevious, _
           searchorder:=xlByRows).Row
       myLastCol = _
         .Cells.Find("*", After:=.Cells(1), _
           LookIn:=xlFormulas, LookAt:=xlWhole, _
           SearchDirection:=xlPrevious, _
           searchorder:=xlByColumns).Column
       On Error GoTo 0

       If myLastRow * myLastCol = 0 Then
           .Columns.Delete
       Else
           .Range(.Cells(myLastRow + 1, 1), _
             .Cells(.Rows.Count, 1)).EntireRow.Delete
           .Range(.Cells(1, myLastCol + 1), _
             .Cells(1, .Columns.Count)).EntireColumn.Delete
       End If
     End With
   Next wks

End Sub

Signature

Jim

| > That line of code should only be run if the sheet is completely empty of
| > cell contents.  If that the case?  The delete should work in any case,
[quoted text clipped - 69 lines]
|
| Steve
Steve - 18 Jun 2007 19:26 GMT
> Fleshing out Don's idea of doing it by name:
>
[quoted text clipped - 108 lines]
> |
> | Steve

thanks folks, got it working...Steve

Rate this thread:






 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.