ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Calculation With A Macro (https://www.excelbanter.com/excel-programming/407821-calculation-macro.html)

Bob

Calculation With A Macro
 
In cell V7 of my worksheet I have the following formula:

=SUM(E7/Sheet1!$D$26)*52

What I would like to do is copy this formula down to line V501 without
having to copy and paste. I also have this same formula in 7 other worksheets
so I would also like to do the same in those as well. I am assuming I will
need some kind of loop in order to do it in the one sheet as well as the
others but do not know how to execute it.

Thanks.

Bob



Thanks.


--
Bob

Lt. Bonifacius

Calculation With A Macro
 
Hi! Bob.
Try placing a Command Button some where in you worksheet, enter in Design
Mode and double clic teh Command Button. In Visual Basic code editor paste
the following code inside de command's button sub.

---------------------------------------------------------------------------------------------
'Variable declaration'
Dim VarRow As Integer
Dim VarSheetName As String

'Variable inicialization'
VarSheetName = Me.Name

'Loop' v501
For VarRow = 7 To 501
Me.Cells(VarRow, 22) = "=SUM(E" & VarRow & "/" & VarSheetName &
"!$D$26)*52"
Next
----------------------------------------------------------------------------------------------



Bob

Calculation With A Macro
 
Thanks. Where in this code would I need to use my particular sheet names?

--
Bob


"Lt. Bonifacius" wrote:

Hi! Bob.
Try placing a Command Button some where in you worksheet, enter in Design
Mode and double clic teh Command Button. In Visual Basic code editor paste
the following code inside de command's button sub.

---------------------------------------------------------------------------------------------
'Variable declaration'
Dim VarRow As Integer
Dim VarSheetName As String

'Variable inicialization'
VarSheetName = Me.Name

'Loop' v501
For VarRow = 7 To 501
Me.Cells(VarRow, 22) = "=SUM(E" & VarRow & "/" & VarSheetName &
"!$D$26)*52"
Next
----------------------------------------------------------------------------------------------



Rick Rothstein \(MVP - VB\)[_1508_]

Calculation With A Macro
 
This macro allows you to specify the worksheets (in the Array function call)
and copy the formula to the required cells on each sheet...

Sub CopyCell()
Dim X As Long
Dim Sh As Variant
For Each Sh In Array("Sheet1", "Sheet2", "Sheet3")
For X = 7 To 501
Worksheets(Sh).Range("B" & CStr(X)).Formula = _
"=SUM(E" & CStr(X) & "/" & Sh & "!$D$26)*52"
Next
Next
End Sub


Rick



"Bob" wrote in message
...
In cell V7 of my worksheet I have the following formula:

=SUM(E7/Sheet1!$D$26)*52

What I would like to do is copy this formula down to line V501 without
having to copy and paste. I also have this same formula in 7 other
worksheets
so I would also like to do the same in those as well. I am assuming I will
need some kind of loop in order to do it in the one sheet as well as the
others but do not know how to execute it.

Thanks.

Bob



Thanks.


--
Bob



Dave Peterson

Calculation With A Macro
 
Just a note.

VBA is pretty forgiving. You can concatenate text with numbers and still end up
with text.

..Range("B" & CStr(X))
could be written as:
..Range("B" & X)

(same in the =sum() portion, too.)

I like:
..cells(x,"B")
though.

I'm guessing that VB is less forgiving?????

"Rick Rothstein (MVP - VB)" wrote:

This macro allows you to specify the worksheets (in the Array function call)
and copy the formula to the required cells on each sheet...

Sub CopyCell()
Dim X As Long
Dim Sh As Variant
For Each Sh In Array("Sheet1", "Sheet2", "Sheet3")
For X = 7 To 501
Worksheets(Sh).Range("B" & CStr(X)).Formula = _
"=SUM(E" & CStr(X) & "/" & Sh & "!$D$26)*52"
Next
Next
End Sub

Rick

"Bob" wrote in message
...
In cell V7 of my worksheet I have the following formula:

=SUM(E7/Sheet1!$D$26)*52

What I would like to do is copy this formula down to line V501 without
having to copy and paste. I also have this same formula in 7 other
worksheets
so I would also like to do the same in those as well. I am assuming I will
need some kind of loop in order to do it in the one sheet as well as the
others but do not know how to execute it.

Thanks.

Bob



Thanks.


--
Bob


--

Dave Peterson

Bob

Calculation With A Macro
 
Thanks Rick - my only issue is that my $D$26 reference resides on a different
sheet - named "sheet1". When I ran the macro it pulled the D26 from the sheet
I was running it from. How can I change the cell reference?


--
Bob


"Rick Rothstein (MVP - VB)" wrote:

This macro allows you to specify the worksheets (in the Array function call)
and copy the formula to the required cells on each sheet...

Sub CopyCell()
Dim X As Long
Dim Sh As Variant
For Each Sh In Array("Sheet1", "Sheet2", "Sheet3")
For X = 7 To 501
Worksheets(Sh).Range("B" & CStr(X)).Formula = _
"=SUM(E" & CStr(X) & "/" & Sh & "!$D$26)*52"
Next
Next
End Sub


Rick



"Bob" wrote in message
...
In cell V7 of my worksheet I have the following formula:

=SUM(E7/Sheet1!$D$26)*52

What I would like to do is copy this formula down to line V501 without
having to copy and paste. I also have this same formula in 7 other
worksheets
so I would also like to do the same in those as well. I am assuming I will
need some kind of loop in order to do it in the one sheet as well as the
others but do not know how to execute it.

Thanks.

Bob



Thanks.


--
Bob




Rick Rothstein \(MVP - VB\)[_1509_]

Calculation With A Macro
 
If I understand you correctly, you want the reference for $D$26 to always be
that cell on Sheet1, no matter what sheet you are copying the formula to. If
that is correct, this should accomplish that for you...

Sub CopyCell()
Dim X As Long
Dim Sh As Variant
For Each Sh In Array("Sheet1", "Sheet2", "Sheet3")
For X = 7 To 501
Worksheets(Sh).Range("B" & CStr(X)).Formula = _
"=SUM(E" & CStr(X) & "/Sheet1!$D$26)*52"
Next
Next
End Sub



"Bob" wrote in message
...
Thanks Rick - my only issue is that my $D$26 reference resides on a
different
sheet - named "sheet1". When I ran the macro it pulled the D26 from the
sheet
I was running it from. How can I change the cell reference?
--
Bob


"Rick Rothstein (MVP - VB)" wrote:

This macro allows you to specify the worksheets (in the Array function
call)
and copy the formula to the required cells on each sheet...

Sub CopyCell()
Dim X As Long
Dim Sh As Variant
For Each Sh In Array("Sheet1", "Sheet2", "Sheet3")
For X = 7 To 501
Worksheets(Sh).Range("B" & CStr(X)).Formula = _
"=SUM(E" & CStr(X) & "/" & Sh & "!$D$26)*52"
Next
Next
End Sub


Rick



"Bob" wrote in message
...
In cell V7 of my worksheet I have the following formula:

=SUM(E7/Sheet1!$D$26)*52

What I would like to do is copy this formula down to line V501 without
having to copy and paste. I also have this same formula in 7 other
worksheets
so I would also like to do the same in those as well. I am assuming I
will
need some kind of loop in order to do it in the one sheet as well as
the
others but do not know how to execute it.

Thanks.

Bob



Thanks.


--
Bob





Rick Rothstein \(MVP - VB\)[_1510_]

Calculation With A Macro
 
Just a note.

VBA is pretty forgiving. You can concatenate text with numbers and still
end up
with text.

.Range("B" & CStr(X))
could be written as:
.Range("B" & X)

(same in the =sum() portion, too.)

I like:
.cells(x,"B")
though.

I'm guessing that VB is less forgiving?????


No, actually, the guts of VBA and compiled VB are the same; so, in this
case, VB would be as forgiving. In the compiled VB world, it is considered
(and please don't take this the wrong way) poor programming practice to let
VB handle the conversions automatically when you know in advance what the
data type should be. Over there, VB's underlying data type coercions are
called "evil type coercions" and are to be avoided whenever possible. In
addition, not omitting default object properties (the Value property of a
Range being an example), expressly declaring variable types and avoiding
Variants whenever possible are also considered good programming practice as
well... three more things which seem to be laxly adhered to in the Excel
community. So, when you see me doing any of these things (such as expressly
using the CStr function as you pointed out), it will simply be a case of
"old habits die hard".

Rick



All times are GMT +1. The time now is 06:26 PM.

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