Consulting

Results 1 to 6 of 6

Thread: ExcelDiet

  1. #1
    VBAX Newbie
    Joined
    Dec 2004
    Posts
    3
    Location

    ExcelDiet

    When I try to run the code called ExcelDiet (code to reduce file size) found somewhere here at VBAX (I am not allowed to post a link) I get an error and the following line:

    .Range(Cells(1, LastCol + 1).Address & ":IV65536").Delete

    is highlighted in yellow.

    Can anyone help?

    Hans Knudsen

  2. #2
    VBAX Expert Tinbendr's Avatar
    Joined
    Jun 2005
    Location
    North Central Mississippi (The Pines)
    Posts
    993
    Location
    And what is the error?

    Excel Diet


  3. #3
    VBAX Newbie
    Joined
    Dec 2004
    Posts
    3
    Location

    ExcelDiet

    [quote=Tinbendr]And what is the error?

    Run-time error 1004
    Delete method of Range class failed

    Hans Knudsen

  4. #4
    Distinguished Lord of VBAX VBAX Grand Master Bob Phillips's Avatar
    Joined
    Apr 2005
    Posts
    25,453
    Location
    What's in LastCol?

    Why not show all the code?
    ____________________________________________
    Nihil simul inventum est et perfectum

    Abusus non tollit usum

    Last night I dreamed of a small consolation enjoyed only by the blind: Nobody knows the trouble I've not seen!
    James Thurber

  5. #5
    VBAX Newbie
    Joined
    Dec 2004
    Posts
    3
    Location

    ExcelDiet

    Last cell (F5, Speciel) is different from one sheet to another but they are all blank.

    Here is the code:

    [VBA]Sub ExcelDiet()

    Dim j As Long
    Dim k As Long
    Dim LastRow As Long
    Dim LastCol As Long
    Dim ColFormula As Range
    Dim RowFormula As Range
    Dim ColValue As Range
    Dim RowValue As Range
    Dim Shp As Shape
    Dim ws As Worksheet

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    On Error Resume Next

    For Each ws In Worksheets
    With ws
    'Find the last used cell with a formula and value
    'Search by Columns and Rows
    On Error Resume Next
    Set ColFormula = .Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
    Set ColValue = .Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, _
    LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
    Set RowFormula = .Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
    Set RowValue = .Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
    On Error GoTo 0

    'Determine the last column
    If ColFormula Is Nothing Then
    LastCol = 0
    Else
    LastCol = ColFormula.Column
    End If
    If Not ColValue Is Nothing Then
    LastCol = Application.WorksheetFunction.Max(LastCol, ColValue.Column)
    End If

    'Determine the last row
    If RowFormula Is Nothing Then
    LastRow = 0
    Else
    LastRow = RowFormula.Row
    End If
    If Not RowValue Is Nothing Then
    LastRow = Application.WorksheetFunction.Max(LastRow, RowValue.Row)
    End If

    'Determine if any shapes are beyond the last row and last column
    For Each Shp In .Shapes
    j = 0
    k = 0
    On Error Resume Next
    j = Shp.TopLeftCell.Row
    k = Shp.TopLeftCell.Column
    On Error GoTo 0
    If j > 0 And k > 0 Then
    Do Until .Cells(j, k).Top > Shp.Top + Shp.Height
    j = j + 1
    Loop
    If j > LastRow Then
    LastRow = j
    End If
    Do Until .Cells(j, k).Left > Shp.Left + Shp.Width
    k = k + 1
    Loop
    If k > LastCol Then
    LastCol = k
    End If
    End If
    Next

    .Range(Cells(1, LastCol + 1).Address & ":IV65536").Delete
    .Range(Cells(LastRow + 1, 1).Address & ":IV65536").Delete
    End With
    Next

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

    End Sub[/VBA]

  6. #6
    VBAX Tutor
    Joined
    Jun 2005
    Posts
    214
    Location
    If only the last (few) row(s) is (are) filtered out by the autofilter, Exceldiet deletes the entire worksheet. Is that normal?

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •