Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 40
Default why is my loop so slow?

what i need to do is delete any rows where col b = 0 or 2?


For conCat2 = 2 To iCountA
If ActiveCell.Value = 2 Then
ActiveCell.EntireRow.Delete
ElseIf ActiveCell.Value = 0 Then
ActiveCell.EntireRow.Delete

Else
ActiveCell.Offset(1, 0).Activate
End If
Next

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 60
Default why is my loop so slow?

Hi Buffyslay,

No need to activate cells and make sure ScreenUpdating is off. Also, if
your workbook makes heavy use of formulas this can have a significant
impact on speed.

Try something like this (untested)...

Sub BuffysLoopy()
Dim i As Long
Dim CalcState As Integer

''' Record the current calculation setting
CalcState = Application.Calculation
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With

For i = iCountA To 2 Step -1
If Cells(i, 2) = 0 Or Cells(i, 2) = 2 Then
Cells(i, 2).EntireRow.Delete
End If
Next i

''' Restore original calculation setting
With Application
.ScreenUpdating = True
.Calculation = CalcState
End With
End Sub

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7,247
Default why is my loop so slow?

Try


Sub AAA()
Dim RangeToDelete As Range
Dim iCountA
Dim RowNdx As Long
iCountA = 100
For RowNdx = 2 To iCountA
If Rows(RowNdx).Cells(1, "B") = 0 Or _
Rows(RowNdx).Cells(1, "B") = 2 Then
If RangeToDelete Is Nothing Then
Set RangeToDelete = Rows(RowNdx)
Else
Set RangeToDelete = Application.Union(RangeToDelete,
Rows(RowNdx))
End If
End If
Next RowNdx
RangeToDelete.EntireRow.Delete
End Sub


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
(email address is on the web site)


"Buffyslay" wrote in message
oups.com...
what i need to do is delete any rows where col b = 0 or 2?


For conCat2 = 2 To iCountA
If ActiveCell.Value = 2 Then
ActiveCell.EntireRow.Delete
ElseIf ActiveCell.Value = 0 Then
ActiveCell.EntireRow.Delete

Else
ActiveCell.Offset(1, 0).Activate
End If
Next



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 60
Default why is my loop so slow?

Wow - a veritable masterclass in less than twenty lines of code!

Top man Chip. ?:^)

Buffyslay, be sure to check out his website.

NickH

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
VBA loop slow if another workbook open George[_8_] Excel Discussion (Misc queries) 3 September 29th 08 01:30 PM
EXCEPTIONALLY SLOW LOOP ....help!!! WhytheQ Excel Programming 6 June 13th 06 06:02 PM
Loop too slow deleteing xltoleft MarcB[_2_] Excel Programming 5 June 9th 04 05:08 AM
slow program in a loop chris Excel Programming 4 October 2nd 03 07:58 AM


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

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

About Us

"It's about Microsoft Excel"