Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Excel 2002 - Slow macros

Hi All

I am working on a spreadsheet where if a cell doesn't
match a date range the whole row is deleted. The macro
created worked fine in Excel97. However, it can take
anything up to an hour and a half for the macro to
process now. I have tried turning of page breaks, screen
update and automatic calculations but have no luck. Is
this a bug within Excel and is there a work-around?
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default Excel 2002 - Slow macros

This is indeed a bug. It has to do with the junk that is loaded into th
memory when starting the workbook. This amount can be huge, if th
workbook is old and is used frequently.

Solution:
Copy and paste the entire workbook (sheet by sheet) to anothe
workbook. Just copy the values and the VBA scripts, DO NOT cut an
paste or use the move/copy provided within excel

--
Message posted from http://www.ExcelForum.com

  #3   Report Post  
Posted to microsoft.public.excel.programming
No Name
 
Posts: n/a
Default Excel 2002 - Slow macros

THanks for the quick response

This has slightly improved and helps delete around 100
rows almost instantaneously, however, it then slows down
again, is there anything else I could do?


-----Original Message-----
This is indeed a bug. It has to do with the junk that is

loaded into the
memory when starting the workbook. This amount can be

huge, if the
workbook is old and is used frequently.

Solution:
Copy and paste the entire workbook (sheet by sheet) to

another
workbook. Just copy the values and the VBA scripts, DO

NOT cut and
paste or use the move/copy provided within excel.


---
Message posted from http://www.ExcelForum.com/

.

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Excel 2002 - Slow macros

I've tried deleting rows 1 by 1 in a new workbook and I
get the same result, basically it slows down after
deleting 20 rows 1 by 1


-----Original Message-----
THanks for the quick response

This has slightly improved and helps delete around 100
rows almost instantaneously, however, it then slows down
again, is there anything else I could do?


-----Original Message-----
This is indeed a bug. It has to do with the junk that

is
loaded into the
memory when starting the workbook. This amount can be

huge, if the
workbook is old and is used frequently.

Solution:
Copy and paste the entire workbook (sheet by sheet) to

another
workbook. Just copy the values and the VBA scripts, DO

NOT cut and
paste or use the move/copy provided within excel.


---
Message posted from http://www.ExcelForum.com/

.

.

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default Excel 2002 - Slow macros

Can you post your script here? Otherwise I cannot tell you why it doe
that...

--
Message posted from http://www.ExcelForum.com



  #6   Report Post  
Posted to microsoft.public.excel.programming
No Name
 
Posts: n/a
Default Excel 2002 - Slow macros

Here is a small Example

Sub Delete_Row_600_551()

Sheets("Data").Select

If Range("G600") < Range("Q1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If

If Range("G600") Range("S1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If


If Range("G599") < Range("Q1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If

If Range("G599") Range("S1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If
End Sub


-----Original Message-----
Can you post your script here? Otherwise I cannot tell

you why it does
that....


---
Message posted from http://www.ExcelForum.com/

.

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default Excel 2002 - Slow macros

I'm no expert on this, but I bet your macro will speed up if you don't
use select.

Try to replace
Rows("600:600").Select
Selection.Delete Shift:=xlUp

with
Rows("600:600").Delete Shift:=xlUp

Good luck
Lester

On Wed, 2 Jun 2004 08:14:55 -0700,
wrote:

Here is a small Example

Sub Delete_Row_600_551()

Sheets("Data").Select

If Range("G600") < Range("Q1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If

If Range("G600") Range("S1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If


If Range("G599") < Range("Q1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If

If Range("G599") Range("S1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If
End Sub


-----Original Message-----
Can you post your script here? Otherwise I cannot tell

you why it does
that....


---
Message posted from http://www.ExcelForum.com/

.


  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Excel 2002 - Slow macros

Sub Delete_Row_600_551()
Dim res as Long
Dim i as Long
Sheets("Data").Select
res = Application.Calculation
application.Calculation = xlManual
Application.ScreenUpdating = False
for i = 600 to 551 step -1
If Cells(i,"G").Value< Range("Q1") or _
Cells(i,"G").Vaue Range("S1") Then
cells(i,"G").EntireRow.Delete
End if
Next i
Application.Calculation = res
Application.ScreenUpdating = True
End Sub

--
Regards,
Tom Ogilvy


wrote in message
...
Here is a small Example

Sub Delete_Row_600_551()

Sheets("Data").Select

If Range("G600") < Range("Q1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If

If Range("G600") Range("S1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If


If Range("G599") < Range("Q1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If

If Range("G599") Range("S1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If
End Sub


-----Original Message-----
Can you post your script here? Otherwise I cannot tell

you why it does
that....


---
Message posted from http://www.ExcelForum.com/

.



  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default Excel 2002 - Slow macros

Cheers Lester, this was a great help.

That has helped a considerable amount, however, it zooms
through about 150 to 200 rows then slows again. Excel
2002 is a real pain at the moment.

Cheers



-----Original Message-----
I'm no expert on this, but I bet your macro will speed

up if you don't
use select.

Try to replace
Rows("600:600").Select
Selection.Delete Shift:=xlUp

with
Rows("600:600").Delete Shift:=xlUp

Good luck
Lester

On Wed, 2 Jun 2004 08:14:55 -0700,
wrote:

Here is a small Example

Sub Delete_Row_600_551()

Sheets("Data").Select

If Range("G600") < Range("Q1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If

If Range("G600") Range("S1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If


If Range("G599") < Range("Q1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If

If Range("G599") Range("S1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If
End Sub


-----Original Message-----
Can you post your script here? Otherwise I cannot tell

you why it does
that....


---
Message posted from http://www.ExcelForum.com/

.


.

  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default Excel 2002 - Slow macros

Hi Tom

I kept getting a Debug error for some reason, I couldn't
see a fault with the macro though can you help

cheers


-----Original Message-----
Sub Delete_Row_600_551()
Dim res as Long
Dim i as Long
Sheets("Data").Select
res = Application.Calculation
application.Calculation = xlManual
Application.ScreenUpdating = False
for i = 600 to 551 step -1
If Cells(i,"G").Value< Range("Q1") or _
Cells(i,"G").Vaue Range("S1") Then
cells(i,"G").EntireRow.Delete
End if
Next i
Application.Calculation = res
Application.ScreenUpdating = True
End Sub

--
Regards,
Tom Ogilvy


wrote in message
...
Here is a small Example

Sub Delete_Row_600_551()

Sheets("Data").Select

If Range("G600") < Range("Q1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If

If Range("G600") Range("S1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If


If Range("G599") < Range("Q1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If

If Range("G599") Range("S1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If
End Sub


-----Original Message-----
Can you post your script here? Otherwise I cannot tell

you why it does
that....


---
Message posted from http://www.ExcelForum.com/

.



.



  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Excel 2002 - Slow macros

there was a typo on one line where Value was vaue. Once corrected, it
worked fine for me.

Sub Delete_Row_600_551()
Dim res As Long
Dim i As Long
Sheets("Data").Select
res = Application.Calculation
Application.Calculation = xlManual
Application.ScreenUpdating = False
For i = 600 To 551 Step -1
If Cells(i, "G").Value < Range("Q1") Or _
Cells(i, "G").Value Range("S1") Then
Cells(i, "G").EntireRow.Delete
End If
Next i
Application.Calculation = res
Application.ScreenUpdating = True
End Sub


--
Regards,
Tom Ogilvy

"Sanj" wrote in message
...
Hi Tom

I kept getting a Debug error for some reason, I couldn't
see a fault with the macro though can you help

cheers


-----Original Message-----
Sub Delete_Row_600_551()
Dim res as Long
Dim i as Long
Sheets("Data").Select
res = Application.Calculation
application.Calculation = xlManual
Application.ScreenUpdating = False
for i = 600 to 551 step -1
If Cells(i,"G").Value< Range("Q1") or _
Cells(i,"G").Vaue Range("S1") Then
cells(i,"G").EntireRow.Delete
End if
Next i
Application.Calculation = res
Application.ScreenUpdating = True
End Sub

--
Regards,
Tom Ogilvy


wrote in message
...
Here is a small Example

Sub Delete_Row_600_551()

Sheets("Data").Select

If Range("G600") < Range("Q1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If

If Range("G600") Range("S1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If


If Range("G599") < Range("Q1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If

If Range("G599") Range("S1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If
End Sub


-----Original Message-----
Can you post your script here? Otherwise I cannot tell
you why it does
that....


---
Message posted from http://www.ExcelForum.com/

.



.



  #12   Report Post  
Posted to microsoft.public.excel.programming
No Name
 
Posts: n/a
Default Excel 2002 - Slow macros

Hi Tom

The first time the code runs it works a treat 5 seconds
to delete the rows, however the second time it runs it
takes 25 seconds. I guess there is no getting around this.
-----Original Message-----
there was a typo on one line where Value was vaue. Once

corrected, it
worked fine for me.

Sub Delete_Row_600_551()
Dim res As Long
Dim i As Long
Sheets("Data").Select
res = Application.Calculation
Application.Calculation = xlManual
Application.ScreenUpdating = False
For i = 600 To 551 Step -1
If Cells(i, "G").Value < Range("Q1") Or _
Cells(i, "G").Value Range("S1") Then
Cells(i, "G").EntireRow.Delete
End If
Next i
Application.Calculation = res
Application.ScreenUpdating = True
End Sub


--
Regards,
Tom Ogilvy

"Sanj" wrote in

message
...
Hi Tom

I kept getting a Debug error for some reason, I

couldn't
see a fault with the macro though can you help

cheers


-----Original Message-----
Sub Delete_Row_600_551()
Dim res as Long
Dim i as Long
Sheets("Data").Select
res = Application.Calculation
application.Calculation = xlManual
Application.ScreenUpdating = False
for i = 600 to 551 step -1
If Cells(i,"G").Value< Range("Q1") or _
Cells(i,"G").Vaue Range("S1") Then
cells(i,"G").EntireRow.Delete
End if
Next i
Application.Calculation = res
Application.ScreenUpdating = True
End Sub

--
Regards,
Tom Ogilvy


wrote in message
...
Here is a small Example

Sub Delete_Row_600_551()

Sheets("Data").Select

If Range("G600") < Range("Q1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If

If Range("G600") Range("S1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If


If Range("G599") < Range("Q1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If

If Range("G599") Range("S1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If
End Sub


-----Original Message-----
Can you post your script here? Otherwise I cannot

tell
you why it does
that....


---
Message posted from http://www.ExcelForum.com/

.



.



.

  #13   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,824
Default Excel 2002 - Slow macros

Try adding:

Activesheet.displaypagebreaks = false
at the top, too.

When you delete a row with the pagebreaks shown, then excel wants to determine
where they go (again and again and again).


wrote:

Hi Tom

The first time the code runs it works a treat 5 seconds
to delete the rows, however the second time it runs it
takes 25 seconds. I guess there is no getting around this.
-----Original Message-----
there was a typo on one line where Value was vaue. Once

corrected, it
worked fine for me.

Sub Delete_Row_600_551()
Dim res As Long
Dim i As Long
Sheets("Data").Select
res = Application.Calculation
Application.Calculation = xlManual
Application.ScreenUpdating = False
For i = 600 To 551 Step -1
If Cells(i, "G").Value < Range("Q1") Or _
Cells(i, "G").Value Range("S1") Then
Cells(i, "G").EntireRow.Delete
End If
Next i
Application.Calculation = res
Application.ScreenUpdating = True
End Sub


--
Regards,
Tom Ogilvy

"Sanj" wrote in

message
...
Hi Tom

I kept getting a Debug error for some reason, I

couldn't
see a fault with the macro though can you help

cheers


-----Original Message-----
Sub Delete_Row_600_551()
Dim res as Long
Dim i as Long
Sheets("Data").Select
res = Application.Calculation
application.Calculation = xlManual
Application.ScreenUpdating = False
for i = 600 to 551 step -1
If Cells(i,"G").Value< Range("Q1") or _
Cells(i,"G").Vaue Range("S1") Then
cells(i,"G").EntireRow.Delete
End if
Next i
Application.Calculation = res
Application.ScreenUpdating = True
End Sub

--
Regards,
Tom Ogilvy


wrote in message
...
Here is a small Example

Sub Delete_Row_600_551()

Sheets("Data").Select

If Range("G600") < Range("Q1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If

If Range("G600") Range("S1") Then
Rows("600:600").Select
Selection.Delete Shift:=xlUp
End If


If Range("G599") < Range("Q1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If

If Range("G599") Range("S1") Then
Rows("599:599").Select
Selection.Delete Shift:=xlUp
End If
End Sub


-----Original Message-----
Can you post your script here? Otherwise I cannot

tell
you why it does
that....


---
Message posted from
http://www.ExcelForum.com/

.



.



.


--

Dave Peterson

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Excel (2002) slow after deleting some macros Peter[_14_] Excel Discussion (Misc queries) 0 April 18th 10 09:06 PM
Calculations run slow in Excel 2002 SP-1 Ash Excel Discussion (Misc queries) 1 August 14th 06 08:13 PM
Saving very slow in Excel 2002 Ailish Excel Discussion (Misc queries) 3 September 23rd 05 07:27 PM
Why are subtotals so slow in Excel 2002 SP-2? Confused? Me too! Excel Discussion (Misc queries) 1 January 27th 05 04:28 AM
DDE very slow with Excel 2002, 2003 Alexandre Nikolov Excel Programming 0 December 23rd 03 12:59 PM


All times are GMT +1. The time now is 01:20 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"