Meaning of some VBA

F

Frank Situmorang

Hello,

About a year ago, with the help of this forum I was able to make a macro to
transfer from an extract sheets ( A00) to and interface sheet ( A00 (2)).

Now there is an additional sheet created by the accounting software named E30.

I tried to refresh again my mine, but I almost forgot, can anyone help me?
the meaning of this VBA:
1.ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Selection.Copy
2. ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
3.ActiveWindow.ScrollWorkbookTabs Sheets:=1
4.Application.CutCopyMode = False

Or is there any way we can slow down the process when we run the macro, so
that we can see what it does?

This is the VBA which is working but, I do not know how to insert inthe VBA,
the Sheet E30 extract and E30(20) interface sheets:

Sub AutoShape10_Click()
'
' AutoShape10_Click Macro
' Macro recorded 5/11/2007 by Frank
' This is to copy data from extracts to Interface sheet

'
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("A00").Select
Cells.Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
Sheets("A00 (2)").Select
Cells.Select
ActiveSheet.Paste
Sheets("E00").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("E00 (2)").Select
Cells.Select
ActiveSheet.Paste
ActiveWindow.ScrollWorkbookTabs Sheets:=1
Sheets("S20").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("S20 (2)").Select
Cells.Select
ActiveSheet.Paste
Sheets("S10 (2)").Select
Cells.Select
Sheets("S10").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("S10 (2)").Select
ActiveSheet.Paste
Sheets("M10 (2)").Select
Cells.Select
Sheets("M10").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("M10 (2)").Select
ActiveSheet.Paste
Sheets("M00 (2)").Select
Cells.Select
Sheets("M00").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("M00 (2)").Select
ActiveSheet.Paste
Sheets("E20 (2)").Select
Cells.Select
ActiveWindow.ScrollWorkbookTabs Sheets:=1
Sheets("E20").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("E20 (2)").Select
ActiveSheet.Paste
Sheets("E10 (2)").Select
Cells.Select
Sheets("E10").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("E10 (2)").Select
ActiveSheet.Paste
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
Sheets("SUMMARYWBLA").Select
End Sub
 
B

Bob Phillips

It looks well over-cooked to me, all you need is

Sub AutoShape10_Click()
Sheets("A00").Cells.Copy Sheets("A00 (2)").Cells
Sheets("E00").Cells.Copy Sheets("E00 (2)").Cells
Sheets("S20").Cells.Copy Sheets("S20 (2)").Cells
Sheets("S10").Cells.Copy Sheets("S10 (2)").Cells
Sheets("M10").Cells.Copy Sheets("M10 (2)").Cells
Sheets("M00").Cells.Copy Sheets("M00 (2)").Cells
Sheets("E20").Cells.Copy Sheets("E20 (2)").Cells
Sheets("E10").Cells.Copy Sheets("E10 (2)").Cells
Sheets("SUMMARYWBLA").Select
End Sub

which you might find simpler to adapt.

--
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
F

Frank Situmorang

Thanks Bob for your great help. In fact my specialty is an accountant, so I
am so thankful for your help.

The way I made macro is by recording macro., the following maybe could be an
overcooked too?:
Sub AutoShape2_Click()
'
' AutoShape2_Click Macro
' Macro recorded 5/2/2007 by Frank
' This is to modify the data presentation from columnwize to rowise, so that
we can sort

'
Sheets("A00 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute E00
Sheets("E00 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute E10
Sheets("E10 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute E20
Sheets("E20 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute E30
Sheets("E30 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute M00
Sheets("M00 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute M10
Sheets("M10 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute S10
Sheets("S10 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute S20
Sheets("S20 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
Sheets("SUMMARYWBLA").Select
Range("H2").Select
End Sub
 
B

Bob Phillips

Frank,

When you record a macro, the recorder copie all actions, some of which may
be what you did but are not necessary for the job, and also takes a
necessarily singular, simplistic approach to it.

As such, statements like

ActiveWindow.SmallScroll Down:=72

are totally redundant in macros, and can be removed.

It tends to repeat things too, so you may see code like this repeated over
and over, which if needed at all is only neede once at the end

Application.CutCopyMode = False

When you set a value in the recorder, it records it in this manner

Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"

which can be reduced to

Range("N9").FormulaR1C1 = "=+R[1]C[-12]"

or even

Range("N9").Value= "=+R[1]C[-12]"

in other words, no need to select it.

And again, you rarely need to select, so instead of

Range("P9").Select
Selection.Copy

you can use

Range("P9")..Copy

and instead of

Range("Q9:X9").Select
ActiveSheet.Paste

you can use

Range("Q9:X9").Paste

or even better, combine the 4 lines into one, that is

Range("P9").Copy Range("Q9:X9")

which is simpler to read, and more efficient without the selecting.

Taking your code as an example this set, which is repeatable on different
ranges throughout your code

'Execute S20
Sheets("S20 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False

can be reduced to

'Execute S20
Sheets("S20 (2)").Select
Range("N9").Value = "=+R[1]C[-12]"
Range("O9").Value = "=+R[2]C[-13]"
Range("P9").Value = "=+R[1]C[-13]"
Range("P9").Copy Range("Q9:X9")
Range("N9:X11").Copy Range("N12:N1004")
Range("N9:X1002").Value = Range("N9:X1002").Value

or even remove the sheet select by using with


'Execute S20
With Sheets("S20 (2)")
.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002").Value
End With

So overall we now have

Sub AutoShape2_Click()
'
' AutoShape2_Click Macro
' Macro recorded 5/2/2007 by Frank
' This is to modify the data presentation from columnwize to rowise, so
thatwe can sort

'
With Sheets("A00 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute E00
With Sheets("E00 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute E10
With Sheets("E10 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute E20
With Sheets("E20 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute E30
With Sheets("E30 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute M00
With Sheets("M00 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute M10
With Sheets("M10 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute S10
With Sheets("S10 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute S20
With Sheets("S20 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002").Value
End With

Sheets("SUMMARYWBLA").Select

Range("H2").Select
End Sub

But here we see the code is doing the same thing to different sheets, so it
would be better to put this into a separate variable function, like so

Private Function UpdateSheet(ByRef sh As Worksheet)

With sh

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002").Value
End With
End Function

Which is called like so

Call UdateSheet(Sheets("S20 (2)"))

The whole code then reduces to

Sub AutoShape2_Click()
'
' AutoShape2_Click Macro
' Macro recorded 5/2/2007 by Frank
' This is to modify the data presentation from columnwize to rowise, so
thatwe can sort

'
Call UpdateSheet(Sheets("A00 (2)"))
Call UpdateSheet(Sheets("E00 (2)"))
Call UpdateSheet(Sheets("E10 (2)"))
Call UpdateSheet(Sheets("E20 (2)"))
Call UpdateSheet(Sheets("E30 (2)"))
Call UpdateSheet(Sheets("M00 (2)"))
Call UpdateSheet(Sheets("M10 (2)"))
Call UpdateSheet(Sheets("S10 (2)"))
Call UpdateSheet(Sheets("S20 (2)"))

Sheets("SUMMARYWBLA").Select
Range("H2").Select
End Sub

Private Function UpdateSheet(ByRef sh As Worksheet)

With sh

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002").Value
End With
End Function

which is simpler, more readable, more maintaiabe, and faster.

--
---
HTH

Bob


(there's no email, no snail mail, but somewhere should be gmail in my addy)



Frank Situmorang said:
Thanks Bob for your great help. In fact my specialty is an accountant, so
I
am so thankful for your help.

The way I made macro is by recording macro., the following maybe could be
an
overcooked too?:
Sub AutoShape2_Click()
'
' AutoShape2_Click Macro
' Macro recorded 5/2/2007 by Frank
' This is to modify the data presentation from columnwize to rowise, so
that
we can sort

'
Sheets("A00 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute E00
Sheets("E00 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute E10
Sheets("E10 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute E20
Sheets("E20 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute E30
Sheets("E30 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute M00
Sheets("M00 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute M10
Sheets("M10 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute S10
Sheets("S10 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
'Execute S20
Sheets("S20 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
Sheets("SUMMARYWBLA").Select
Range("H2").Select
End Sub
--
H. Frank Situmorang


Bob Phillips said:
It looks well over-cooked to me, all you need is

Sub AutoShape10_Click()
Sheets("A00").Cells.Copy Sheets("A00 (2)").Cells
Sheets("E00").Cells.Copy Sheets("E00 (2)").Cells
Sheets("S20").Cells.Copy Sheets("S20 (2)").Cells
Sheets("S10").Cells.Copy Sheets("S10 (2)").Cells
Sheets("M10").Cells.Copy Sheets("M10 (2)").Cells
Sheets("M00").Cells.Copy Sheets("M00 (2)").Cells
Sheets("E20").Cells.Copy Sheets("E20 (2)").Cells
Sheets("E10").Cells.Copy Sheets("E10 (2)").Cells
Sheets("SUMMARYWBLA").Select
End Sub

which you might find simpler to adapt.

--
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my
addy)
 
F

Frank Situmorang

Bob:

Thanks very much for your explanantion, it really opens my mind and now I
know better about this VBA. I am so amazed with all good poeple like you in
this forum. We, in the developping countiry are really helped by this forum.

Greetings from Jakarta, Indonesia.
--
H. Frank Situmorang


Bob Phillips said:
Frank,

When you record a macro, the recorder copie all actions, some of which may
be what you did but are not necessary for the job, and also takes a
necessarily singular, simplistic approach to it.

As such, statements like

ActiveWindow.SmallScroll Down:=72

are totally redundant in macros, and can be removed.

It tends to repeat things too, so you may see code like this repeated over
and over, which if needed at all is only neede once at the end

Application.CutCopyMode = False

When you set a value in the recorder, it records it in this manner

Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"

which can be reduced to

Range("N9").FormulaR1C1 = "=+R[1]C[-12]"

or even

Range("N9").Value= "=+R[1]C[-12]"

in other words, no need to select it.

And again, you rarely need to select, so instead of

Range("P9").Select
Selection.Copy

you can use

Range("P9")..Copy

and instead of

Range("Q9:X9").Select
ActiveSheet.Paste

you can use

Range("Q9:X9").Paste

or even better, combine the 4 lines into one, that is

Range("P9").Copy Range("Q9:X9")

which is simpler to read, and more efficient without the selecting.

Taking your code as an example this set, which is repeatable on different
ranges throughout your code

'Execute S20
Sheets("S20 (2)").Select
ActiveWindow.SmallScroll ToRight:=6
Range("N9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-12]"
Range("O9").Select
ActiveCell.FormulaR1C1 = "=+R[2]C[-13]"
Range("P9").Select
ActiveCell.FormulaR1C1 = "=+R[1]C[-13]"
Range("P9").Select
Selection.Copy
Range("Q9:X9").Select
ActiveSheet.Paste
Range("N9:X11").Select
Application.CutCopyMode = False
Selection.Copy
Range("N12:N1004").Select
ActiveSheet.Paste
Range("N9:X9").Select
ActiveWindow.SmallScroll Down:=72
Range("N9:X1002").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False

can be reduced to

'Execute S20
Sheets("S20 (2)").Select
Range("N9").Value = "=+R[1]C[-12]"
Range("O9").Value = "=+R[2]C[-13]"
Range("P9").Value = "=+R[1]C[-13]"
Range("P9").Copy Range("Q9:X9")
Range("N9:X11").Copy Range("N12:N1004")
Range("N9:X1002").Value = Range("N9:X1002").Value

or even remove the sheet select by using with


'Execute S20
With Sheets("S20 (2)")
.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002").Value
End With

So overall we now have

Sub AutoShape2_Click()
'
' AutoShape2_Click Macro
' Macro recorded 5/2/2007 by Frank
' This is to modify the data presentation from columnwize to rowise, so
thatwe can sort

'
With Sheets("A00 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute E00
With Sheets("E00 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute E10
With Sheets("E10 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute E20
With Sheets("E20 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute E30
With Sheets("E30 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute M00
With Sheets("M00 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute M10
With Sheets("M10 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute S10
With Sheets("S10 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002")
End With

'Execute S20
With Sheets("S20 (2)")

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002").Value
End With

Sheets("SUMMARYWBLA").Select

Range("H2").Select
End Sub

But here we see the code is doing the same thing to different sheets, so it
would be better to put this into a separate variable function, like so

Private Function UpdateSheet(ByRef sh As Worksheet)

With sh

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002").Value
End With
End Function

Which is called like so

Call UdateSheet(Sheets("S20 (2)"))

The whole code then reduces to

Sub AutoShape2_Click()
'
' AutoShape2_Click Macro
' Macro recorded 5/2/2007 by Frank
' This is to modify the data presentation from columnwize to rowise, so
thatwe can sort

'
Call UpdateSheet(Sheets("A00 (2)"))
Call UpdateSheet(Sheets("E00 (2)"))
Call UpdateSheet(Sheets("E10 (2)"))
Call UpdateSheet(Sheets("E20 (2)"))
Call UpdateSheet(Sheets("E30 (2)"))
Call UpdateSheet(Sheets("M00 (2)"))
Call UpdateSheet(Sheets("M10 (2)"))
Call UpdateSheet(Sheets("S10 (2)"))
Call UpdateSheet(Sheets("S20 (2)"))

Sheets("SUMMARYWBLA").Select
Range("H2").Select
End Sub

Private Function UpdateSheet(ByRef sh As Worksheet)

With sh

.Range("N9").Value = "=+R[1]C[-12]"
.Range("O9").Value = "=+R[2]C[-13]"
.Range("P9").Value = "=+R[1]C[-13]"
.Range("P9").Copy .Range("Q9:X9")
.Range("N9:X11").Copy .Range("N12:N1004")
.Range("N9:X1002").Value = .Range("N9:X1002").Value
End With
End Function

which is simpler, more readable, more maintaiabe, and faster.

--
---
HTH

Bob


(there's no email, no snail mail, but somewhere should be gmail in my addy)



Frank Situmorang said:
Thanks Bob for your great help. In fact my specialty is an accountant, so
I
am so thankful for your help.
 

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