ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Need to Speed Up A Macro (https://www.excelbanter.com/excel-programming/431357-need-speed-up-macro.html)

LostInNY

Need to Speed Up A Macro
 
I am using the following code for 10 sheets in the same workbook. It works,
but it takes about 4 minutes to run. The 10 spreadsheets contain formulas
which I do not want in the final version. I am performing an advance filter
on each sheet and copying this info to another spreadsheet and copying back
values only to the original spreadsheet. Effective, but very time consuming.
I am using Excel 2003. Any suggestions on how to speed this up?


Sheets("sheet1").Select
Range("A1:D3000").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Rows("1:3001").Select
Selection.Copy
Sheets("CopyWorkSheet").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=True, Transpose:=False
Sheets("Sheet1").Select
Application.CutCopyMode = False
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
Sheets("CopyWorkSheet").Select
Cells.Select
Selection.Copy
Sheets("sheet1").Select


Barb Reinhardt

Need to Speed Up A Macro
 
Try adding

Application.Screenupdating = False
Application.Calculation = xlCalculationmanual

at the beginning and

Application.Screenupdating = True
Application.Calculation = XLCalculationAutomatic

at the end. If you have any code triggered by events, you'll probably want
to turn that off as well.

HTH,
Barb Reinhardt

"LostInNY" wrote:

I am using the following code for 10 sheets in the same workbook. It works,
but it takes about 4 minutes to run. The 10 spreadsheets contain formulas
which I do not want in the final version. I am performing an advance filter
on each sheet and copying this info to another spreadsheet and copying back
values only to the original spreadsheet. Effective, but very time consuming.
I am using Excel 2003. Any suggestions on how to speed this up?


Sheets("sheet1").Select
Range("A1:D3000").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Rows("1:3001").Select
Selection.Copy
Sheets("CopyWorkSheet").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=True, Transpose:=False
Sheets("Sheet1").Select
Application.CutCopyMode = False
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
Sheets("CopyWorkSheet").Select
Cells.Select
Selection.Copy
Sheets("sheet1").Select


Jim Thomlinson

Need to Speed Up A Macro
 
Additional to Barb's suggestions which should go a long way to amking things
faster you can remove the slects from your code to add a touch more speed...


with Sheets("sheet1")
.Range("A1:D3000").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
.Rows("1:3001").Copy
Sheets("CopyWorkSheet").Cells.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
Sheets("CopyWorkSheet").Cells.Copy
Sheets("sheet1").Select
End With
--
HTH...

Jim Thomlinson


"Barb Reinhardt" wrote:

Try adding

Application.Screenupdating = False
Application.Calculation = xlCalculationmanual

at the beginning and

Application.Screenupdating = True
Application.Calculation = XLCalculationAutomatic

at the end. If you have any code triggered by events, you'll probably want
to turn that off as well.

HTH,
Barb Reinhardt

"LostInNY" wrote:

I am using the following code for 10 sheets in the same workbook. It works,
but it takes about 4 minutes to run. The 10 spreadsheets contain formulas
which I do not want in the final version. I am performing an advance filter
on each sheet and copying this info to another spreadsheet and copying back
values only to the original spreadsheet. Effective, but very time consuming.
I am using Excel 2003. Any suggestions on how to speed this up?


Sheets("sheet1").Select
Range("A1:D3000").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Rows("1:3001").Select
Selection.Copy
Sheets("CopyWorkSheet").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=True, Transpose:=False
Sheets("Sheet1").Select
Application.CutCopyMode = False
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
Sheets("CopyWorkSheet").Select
Cells.Select
Selection.Copy
Sheets("sheet1").Select



All times are GMT +1. The time now is 06:28 AM.

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