ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Slow Macro (https://www.excelbanter.com/excel-programming/392376-slow-macro.html)

Frank Situmorang

Slow Macro
 
Hello,

I found it that my following VBA makes it slow. Could you please help me how
can we make it faster, bacause we will do for huge worksheets and 100 of
workbooks.
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Out of my whole VBA:

Sub frankmodi()
Windows("M10-7-012 MORIC INDONESIA.xls").Activate
Sheets("PO New (2)").Copy After:=Sheets(2)
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:AV").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

We appreciate your help.

Frank



JLatham

Slow Macro
 
There are a couple of things you can do to speed it up. One big, easy one is
to put
Application.ScreenUpdating = False
ahead of everything - as the first statement in the sub. Then at the end,
right before End Sub, put
Application.ScreenUpdating = True

you won't see all the screen flashing and changing of values on the sheet(s)
while that is happening, but by not having to update the display, the process
will run much faster.

The next thing you could do, if that simple fix isn't enough, is to consider
using objects to refer to the new sheet(s) and ranges on them that you are
working with. This is another performance improvement.

Also, you are selecting all cells (the Cells.Select statement) on the
worksheet. You could probably get a performance improvement by fine-tuning
the routine to only select the used cells. There are a couple of ways to do
that, but a quick way would be using this instead of Cells.Select in your code

Range("A1:" & Selection.SpecialCells(xlCellTypeLastCell).Address ).Select

you may still pick up some empty cells, especially after deleting columns
A:AV, but it will be minimized.



"Frank Situmorang" wrote:

Hello,

I found it that my following VBA makes it slow. Could you please help me how
can we make it faster, bacause we will do for huge worksheets and 100 of
workbooks.
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Out of my whole VBA:

Sub frankmodi()
Windows("M10-7-012 MORIC INDONESIA.xls").Activate
Sheets("PO New (2)").Copy After:=Sheets(2)
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:AV").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

We appreciate your help.

Frank



Dave Peterson

Slow Macro
 
Sometimes changing calculation to manual, doing the change, then turning
calculation back to automatic can speed things up.

Other times, it doesn't help much.

Frank Situmorang wrote:

Hello,

I found it that my following VBA makes it slow. Could you please help me how
can we make it faster, bacause we will do for huge worksheets and 100 of
workbooks.
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Out of my whole VBA:

Sub frankmodi()
Windows("M10-7-012 MORIC INDONESIA.xls").Activate
Sheets("PO New (2)").Copy After:=Sheets(2)
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:AV").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

We appreciate your help.

Frank


--

Dave Peterson

[email protected]

Slow Macro
 
On Jun 29, 7:39 am, Dave Peterson wrote:
Sometimes changing calculation to manual, doing the change, then turning
calculation back to automatic can speed things up.

Other times, it doesn't help much.





Frank Situmorang wrote:

Hello,


I found it that my following VBA makes it slow. Could you please help me how
can we make it faster, bacause we will do for huge worksheets and 100 of
workbooks.
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Out of my whole VBA:


Sub frankmodi()
Windows("M10-7-012 MORIC INDONESIA.xls").Activate
Sheets("PO New (2)").Copy After:=Sheets(2)
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:AV").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub


We appreciate your help.


I thought I posted this reply earlier but it never showed up.

I am curious what the purpose of the 2 replace commands is. Since
they are one after the other, selection hasn't changed and the second
appears to undo the first.

Also, since the first replace command uses an empty string for the
WHAT, won't that result in a large number of replacements?

Peter


JLatham

Slow Macro
 
I meant to ask that same question - the second replace does appear to undo
all of what the first one did.

" wrote:

On Jun 29, 7:39 am, Dave Peterson wrote:
Sometimes changing calculation to manual, doing the change, then turning
calculation back to automatic can speed things up.

Other times, it doesn't help much.





Frank Situmorang wrote:

Hello,


I found it that my following VBA makes it slow. Could you please help me how
can we make it faster, bacause we will do for huge worksheets and 100 of
workbooks.
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Out of my whole VBA:


Sub frankmodi()
Windows("M10-7-012 MORIC INDONESIA.xls").Activate
Sheets("PO New (2)").Copy After:=Sheets(2)
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:AV").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub


We appreciate your help.


I thought I posted this reply earlier but it never showed up.

I am curious what the purpose of the 2 replace commands is. Since
they are one after the other, selection hasn't changed and the second
appears to undo the first.

Also, since the first replace command uses an empty string for the
WHAT, won't that result in a large number of replacements?

Peter



Dave Peterson

Slow Macro
 
If you have lots of formulas that evaluate to =""

=if(a1=1,"ok","")

And then convert to values, the cells that evaluate to "" look empty, but aren't
empty.

You can see this with =len() and =counta().
=len() will return 0 and =counta() will return 1.

One way to really empty these cells is to do this pair of mass changes.



JLatham wrote:

I meant to ask that same question - the second replace does appear to undo
all of what the first one did.

" wrote:

On Jun 29, 7:39 am, Dave Peterson wrote:
Sometimes changing calculation to manual, doing the change, then turning
calculation back to automatic can speed things up.

Other times, it doesn't help much.





Frank Situmorang wrote:

Hello,

I found it that my following VBA makes it slow. Could you please help me how
can we make it faster, bacause we will do for huge worksheets and 100 of
workbooks.
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Out of my whole VBA:

Sub frankmodi()
Windows("M10-7-012 MORIC INDONESIA.xls").Activate
Sheets("PO New (2)").Copy After:=Sheets(2)
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:AV").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

We appreciate your help.

I thought I posted this reply earlier but it never showed up.

I am curious what the purpose of the 2 replace commands is. Since
they are one after the other, selection hasn't changed and the second
appears to undo the first.

Also, since the first replace command uses an empty string for the
WHAT, won't that result in a large number of replacements?

Peter



--

Dave Peterson

[email protected]

Slow Macro
 
On Jun 30, 7:00 am, Dave Peterson wrote:
If you have lots of formulas that evaluate to =""

=if(a1=1,"ok","")

And then convert to values, the cells that evaluate to "" look empty, but aren't
empty.

You can see this with =len() and =counta().
=len() will return 0 and =counta() will return 1.

One way to really empty these cells is to do this pair of mass changes.





JLatham wrote:

I meant to ask that same question - the second replace does appear to undo
all of what the first one did.


" wrote:


On Jun 29, 7:39 am, Dave Peterson wrote:
Sometimes changing calculation to manual, doing the change, then turning
calculation back to automatic can speed things up.


Other times, it doesn't help much.


Frank Situmorang wrote:


Hello,


I found it that my following VBA makes it slow. Could you please help me how
can we make it faster, bacause we will do for huge worksheets and 100 of
workbooks.
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Out of my whole VBA:


Sub frankmodi()
Windows("M10-7-012 MORIC INDONESIA.xls").Activate
Sheets("PO New (2)").Copy After:=Sheets(2)
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:AV").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Replace What:="", Replacement:="$$$$$", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="$$$$$", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub


We appreciate your help.


I thought I posted this reply earlier but it never showed up.


I am curious what the purpose of the 2 replace commands is. Since
they are one after the other, selection hasn't changed and the second
appears to undo the first.


Also, since the first replace command uses an empty string for the
WHAT, won't that result in a large number of replacements?


Peter


--

Dave Peterson- Hide quoted text -

- Show quoted text -


Since the selection is all the cells this is going to change a lot of
things and if it really needs to be done for some reason I would
certainly turn or recalculating and screenupdating.

Peter


Dave Peterson

Slow Macro
 
edit|replace is limited to the usedrange--but that could be a large area, too.

" wrote:


Since the selection is all the cells this is going to change a lot of
things and if it really needs to be done for some reason I would
certainly turn or recalculating and screenupdating.

Peter


--

Dave Peterson


All times are GMT +1. The time now is 10:35 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com