VBA speed up

S

shawntweber

I've got some VBA Subs I use to frequently fix millions of rows of excel data. They all work very well and are very fast and the same speed to the naked eye. However, one of the Subs (badSub) processes MUCH slower than the others. How can I change "badSub" to be as fast as the "GoodSubs". I'm not interested in code like that I could apply to all the Subs like:

Application.Calculation = xlManual
Application.ScreenUpdating = False

I'm interested in what part of the "badSub" code is causing it to behave much slower than the others.


Sub goodSubOne()
Dim foundRange As Range

Set foundRange = Columns("A").Find("Feb/26/2013")

Do While Not foundRange Is Nothing
foundRange.Range("A1:A7").Select
Selection.EntireRow.Delete
Set foundRange = Columns("A").Find("Feb/26/2013")
Loop
End Sub



Sub goodSubTwo()
Dim foundRange As Range

Set foundRange = Cells.Find("f report")

Do While Not foundRange Is Nothing
foundRange.Range("A1:A5").Offset(-4, 0).Select
Selection.EntireRow.Delete
Set foundRange = Cells.Find("f report")
Loop
End Sub



Public Sub goodSubThree()
Dim foundRange As Range
Dim firstRange As String

Set foundRange = Columns("G").Find(what:="*", LookIn:=xlFormulas)

If Not foundRange Is Nothing Then
firstRange = foundRange.Address
Do
Range(foundRange.Offset(1, 1), foundRange.End(xlDown).Offset(-1, 1)).Select
Selection.Cut Destination:=Selection.Offset(-1, 0)
Set foundRange = Columns("G").FindNext(foundRange)
Loop While foundRange.Address <> firstRange
End If
End Sub



Sub badSub()
Dim foundRange As Range

Do
Set foundRange = Columns("H").Find(what:="", LookIn:=xlFormulas)
Range(foundRange, foundRange.End(xlDown).Offset(-1, 0)).Select
Selection.EntireRow.Delete
Loop Until Selection.Height > 1000

End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top