ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   FOR EACH statement (https://www.excelbanter.com/excel-programming/342301-each-statement.html)

zhj23

FOR EACH statement
 
I have 3 worksheets,wanted to find the total sum of the values appeared in a
column (F say) in each of the worksheets. My following codes do not give me
the right answer. Instead it sums only the first sheet, but output triple the
total value of the FIRST sheet and ignores the other 2 sheets. Can anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total

Gary''s Student

FOR EACH statement
 
You may need an activate:

Sub Macro1()
Dim w As Worksheet
t = 0
For Each w In Worksheets
w.Activate
t = t + Cells(1, 1)
Next
MsgBox (t)
End Sub

will work. There may be other problems as well

--
Gary's Student


"zhj23" wrote:

I have 3 worksheets,wanted to find the total sum of the values appeared in a
column (F say) in each of the worksheets. My following codes do not give me
the right answer. Instead it sums only the first sheet, but output triple the
total value of the FIRST sheet and ignores the other 2 sheets. Can anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total


zhj23

FOR EACH statement
 
Hello! Friend

Thanks for writing.

But it didn't work. Still gives triple the sum of Sheet 1 only.


zhj23

"Gary''s Student" wrote:

You may need an activate:

Sub Macro1()
Dim w As Worksheet
t = 0
For Each w In Worksheets
w.Activate
t = t + Cells(1, 1)
Next
MsgBox (t)
End Sub

will work. There may be other problems as well

--
Gary's Student


"zhj23" wrote:

I have 3 worksheets,wanted to find the total sum of the values appeared in a
column (F say) in each of the worksheets. My following codes do not give me
the right answer. Instead it sums only the first sheet, but output triple the
total value of the FIRST sheet and ignores the other 2 sheets. Can anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total


Gary''s Student

FOR EACH statement
 
How about the range? I noticed it has a . rather than a :
--
Gary''s Student


"zhj23" wrote:

Hello! Friend

Thanks for writing.

But it didn't work. Still gives triple the sum of Sheet 1 only.


zhj23

"Gary''s Student" wrote:

You may need an activate:

Sub Macro1()
Dim w As Worksheet
t = 0
For Each w In Worksheets
w.Activate
t = t + Cells(1, 1)
Next
MsgBox (t)
End Sub

will work. There may be other problems as well

--
Gary's Student


"zhj23" wrote:

I have 3 worksheets,wanted to find the total sum of the values appeared in a
column (F say) in each of the worksheets. My following codes do not give me
the right answer. Instead it sums only the first sheet, but output triple the
total value of the FIRST sheet and ignores the other 2 sheets. Can anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total


Gary Keramidas

FOR EACH statement
 
see if this will do what you want

Sub addSheets2()
Dim shtotal As Integer
Dim total As Integer
Dim wkSht As Worksheet
Dim rng As Range

Dim i As Integer
total = 0
For Each wkSht In ThisWorkbook.Worksheets
Set rng = wkSht.Range("a8:a50")
shtotal = Application.Sum(rng)
total = shtotal + total
shtotal = 0

Next wkSht
MsgBox total

End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values appeared in
a
column (F say) in each of the worksheets. My following codes do not give
me
the right answer. Instead it sums only the first sheet, but output triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total




Gary Keramidas

FOR EACH statement
 
you can delete the dim i line, it was left over

--


Gary


"Gary Keramidas" <GKeramidasATmsn.com wrote in message
...
see if this will do what you want

Sub addSheets2()
Dim shtotal As Integer
Dim total As Integer
Dim wkSht As Worksheet
Dim rng As Range

Dim i As Integer
total = 0
For Each wkSht In ThisWorkbook.Worksheets
Set rng = wkSht.Range("a8:a50")
shtotal = Application.Sum(rng)
total = shtotal + total
shtotal = 0

Next wkSht
MsgBox total

End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values appeared in
a
column (F say) in each of the worksheets. My following codes do not give
me
the right answer. Instead it sums only the first sheet, but output triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total






Gary Keramidas

FOR EACH statement
 
i adapted your code instead of using mine, in case you're interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values appeared in
a
column (F say) in each of the worksheets. My following codes do not give
me
the right answer. Instead it sums only the first sheet, but output triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total




zhj23

FOR EACH statement
 
Hi! Gary


Yes. I am very interested to know what is wrong with my codes. So when you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in Sheet 1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values appeared in
a
column (F say) in each of the worksheets. My following codes do not give
me
the right answer. Instead it sums only the first sheet, but output triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total





Gary Keramidas

FOR EACH statement
 
Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes. So when you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in Sheet 1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values appeared
in
a
column (F say) in each of the worksheets. My following codes do not
give
me
the right answer. Instead it sums only the first sheet, but output
triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total







zhj23

FOR EACH statement
 
Gary

Sorry. I have done EXACTLY what you have suggested. It still doesnt work.

(Although the total is not necessary INTEGER, it does not bother me for
testing purposes)

FYI, I had made it work by using the FOR.. NEXT statement, but I want to
know why can't work with FOR EACH.

Zhj23


"Gary Keramidas" wrote:

Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes. So when you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in Sheet 1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values appeared
in
a
column (F say) in each of the worksheets. My following codes do not
give
me
the right answer. Instead it sums only the first sheet, but output
triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total







Gary Keramidas

FOR EACH statement
 
just created a new workbook and pasted your code in
added the 2 dim statements, total and rng, and the 2 lines between the for
and next of your code

i have a total of in column a of 260 on sheet1, 70 on sheet2 and 195 in
sheet3. this totals 525 and that's what i get,.

are you sure you set this line, Set rng = wkSht.Range("a8:a50"), in the for
next loop?

are you saying that if you copy and paste this code and run it it gives you
3* the column A total of sheet1?

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
Gary

Sorry. I have done EXACTLY what you have suggested. It still doesnt work.

(Although the total is not necessary INTEGER, it does not bother me for
testing purposes)

FYI, I had made it work by using the FOR.. NEXT statement, but I want to
know why can't work with FOR EACH.

Zhj23


"Gary Keramidas" wrote:

Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes. So when
you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in Sheet
1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values
appeared
in
a
column (F say) in each of the worksheets. My following codes do not
give
me
the right answer. Instead it sums only the first sheet, but output
triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total









zhj23

FOR EACH statement
 
Gary

I did all you told, except my data is in Col F, which I don't think it is
material.

Yes. I got 3* the total of Sheet 1 ONLY.

(and i don't think the dot and colon in the range matter)

Below are my codes.


Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Integer

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8.f150")
total = total + Application.Sum(rnge)

Next wkSht

MsgBox ("Total = ") & total

End Sub






"Gary Keramidas" wrote:

just created a new workbook and pasted your code in
added the 2 dim statements, total and rng, and the 2 lines between the for
and next of your code

i have a total of in column a of 260 on sheet1, 70 on sheet2 and 195 in
sheet3. this totals 525 and that's what i get,.

are you sure you set this line, Set rng = wkSht.Range("a8:a50"), in the for
next loop?

are you saying that if you copy and paste this code and run it it gives you
3* the column A total of sheet1?

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
Gary

Sorry. I have done EXACTLY what you have suggested. It still doesnt work.

(Although the total is not necessary INTEGER, it does not bother me for
testing purposes)

FYI, I had made it work by using the FOR.. NEXT statement, but I want to
know why can't work with FOR EACH.

Zhj23


"Gary Keramidas" wrote:

Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes. So when
you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in Sheet
1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values
appeared
in
a
column (F say) in each of the worksheets. My following codes do not
give
me
the right answer. Instead it sums only the first sheet, but output
triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total










Dave Peterson

FOR EACH statement
 
What makes you think that the total really isn't just 3 * the total in sheet1.
Maybe it's just a coincidence???

Option Explicit

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Double

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8:f150")
total = total + Application.Sum(rnge)
MsgBox "Sheet " & wkSht.Name & " total: " & Application.Sum(rnge) _
& vbLf & "Running total: " & total
Next wkSht

MsgBox ("Total = ") & total

End Sub

zhj23 wrote:

Gary

I did all you told, except my data is in Col F, which I don't think it is
material.

Yes. I got 3* the total of Sheet 1 ONLY.

(and i don't think the dot and colon in the range matter)

Below are my codes.

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Integer

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8.f150")
total = total + Application.Sum(rnge)

Next wkSht

MsgBox ("Total = ") & total

End Sub

"Gary Keramidas" wrote:

just created a new workbook and pasted your code in
added the 2 dim statements, total and rng, and the 2 lines between the for
and next of your code

i have a total of in column a of 260 on sheet1, 70 on sheet2 and 195 in
sheet3. this totals 525 and that's what i get,.

are you sure you set this line, Set rng = wkSht.Range("a8:a50"), in the for
next loop?

are you saying that if you copy and paste this code and run it it gives you
3* the column A total of sheet1?

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
Gary

Sorry. I have done EXACTLY what you have suggested. It still doesnt work.

(Although the total is not necessary INTEGER, it does not bother me for
testing purposes)

FYI, I had made it work by using the FOR.. NEXT statement, but I want to
know why can't work with FOR EACH.

Zhj23


"Gary Keramidas" wrote:

Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes. So when
you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in Sheet
1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values
appeared
in
a
column (F say) in each of the worksheets. My following codes do not
give
me
the right answer. Instead it sums only the first sheet, but output
triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total










--

Dave Peterson

Gary Keramidas

FOR EACH statement
 
i was about to ask what the individual totals were for each sheet. dave, one
question, what's the significance of total as double?

--


Gary


"Dave Peterson" wrote in message
...
What makes you think that the total really isn't just 3 * the total in
sheet1.
Maybe it's just a coincidence???

Option Explicit

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Double

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8:f150")
total = total + Application.Sum(rnge)
MsgBox "Sheet " & wkSht.Name & " total: " & Application.Sum(rnge) _
& vbLf & "Running total: " & total
Next wkSht

MsgBox ("Total = ") & total

End Sub

zhj23 wrote:

Gary

I did all you told, except my data is in Col F, which I don't think it is
material.

Yes. I got 3* the total of Sheet 1 ONLY.

(and i don't think the dot and colon in the range matter)

Below are my codes.

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Integer

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8.f150")
total = total + Application.Sum(rnge)

Next wkSht

MsgBox ("Total = ") & total

End Sub

"Gary Keramidas" wrote:

just created a new workbook and pasted your code in
added the 2 dim statements, total and rng, and the 2 lines between the
for
and next of your code

i have a total of in column a of 260 on sheet1, 70 on sheet2 and 195 in
sheet3. this totals 525 and that's what i get,.

are you sure you set this line, Set rng = wkSht.Range("a8:a50"), in
the for
next loop?

are you saying that if you copy and paste this code and run it it gives
you
3* the column A total of sheet1?

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
Gary

Sorry. I have done EXACTLY what you have suggested. It still doesnt
work.

(Although the total is not necessary INTEGER, it does not bother me
for
testing purposes)

FYI, I had made it work by using the FOR.. NEXT statement, but I want
to
know why can't work with FOR EACH.

Zhj23


"Gary Keramidas" wrote:

Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes. So
when
you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in
Sheet
1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're
interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values
appeared
in
a
column (F say) in each of the worksheets. My following codes do
not
give
me
the right answer. Instead it sums only the first sheet, but
output
triple
the
total value of the FIRST sheet and ignores the other 2 sheets.
Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total










--

Dave Peterson




Dave Peterson

FOR EACH statement
 
An integer is a whole number (..., -3,-2, -1, 0, 1, 2, 3, ...)

A double can contain decimals (3.14159, 1.41, 0, 1.01001000100001)



Gary Keramidas wrote:

i was about to ask what the individual totals were for each sheet. dave, one
question, what's the significance of total as double?

--

Gary

"Dave Peterson" wrote in message
...
What makes you think that the total really isn't just 3 * the total in
sheet1.
Maybe it's just a coincidence???

Option Explicit

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Double

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8:f150")
total = total + Application.Sum(rnge)
MsgBox "Sheet " & wkSht.Name & " total: " & Application.Sum(rnge) _
& vbLf & "Running total: " & total
Next wkSht

MsgBox ("Total = ") & total

End Sub

zhj23 wrote:

Gary

I did all you told, except my data is in Col F, which I don't think it is
material.

Yes. I got 3* the total of Sheet 1 ONLY.

(and i don't think the dot and colon in the range matter)

Below are my codes.

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Integer

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8.f150")
total = total + Application.Sum(rnge)

Next wkSht

MsgBox ("Total = ") & total

End Sub

"Gary Keramidas" wrote:

just created a new workbook and pasted your code in
added the 2 dim statements, total and rng, and the 2 lines between the
for
and next of your code

i have a total of in column a of 260 on sheet1, 70 on sheet2 and 195 in
sheet3. this totals 525 and that's what i get,.

are you sure you set this line, Set rng = wkSht.Range("a8:a50"), in
the for
next loop?

are you saying that if you copy and paste this code and run it it gives
you
3* the column A total of sheet1?

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
Gary

Sorry. I have done EXACTLY what you have suggested. It still doesnt
work.

(Although the total is not necessary INTEGER, it does not bother me
for
testing purposes)

FYI, I had made it work by using the FOR.. NEXT statement, but I want
to
know why can't work with FOR EACH.

Zhj23


"Gary Keramidas" wrote:

Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes. So
when
you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in
Sheet
1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're
interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values
appeared
in
a
column (F say) in each of the worksheets. My following codes do
not
give
me
the right answer. Instead it sums only the first sheet, but
output
triple
the
total value of the FIRST sheet and ignores the other 2 sheets.
Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total










--

Dave Peterson


--

Dave Peterson

zhj23

FOR EACH statement
 
Dave:

With your codes I got the answer.

Yes. it is indeed a coincidence which dirves me crazy.

However, i have one more question:

If I use this statement, and drop the SET statement

total = total + Application.Sum(Range("f8.f150"))

It indeed gives me 3*total Sheet 1. (bcos I hv 3 sheets?)

Could you enlighten me. Thanks.

(Gary: sorry for taken so much of your time resulting from the COINCIDENCE)


Zhj23




"Dave Peterson" wrote:

What makes you think that the total really isn't just 3 * the total in sheet1.
Maybe it's just a coincidence???

Option Explicit

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Double

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8:f150")
total = total + Application.Sum(rnge)
MsgBox "Sheet " & wkSht.Name & " total: " & Application.Sum(rnge) _
& vbLf & "Running total: " & total
Next wkSht

MsgBox ("Total = ") & total

End Sub

zhj23 wrote:

Gary

I did all you told, except my data is in Col F, which I don't think it is
material.

Yes. I got 3* the total of Sheet 1 ONLY.

(and i don't think the dot and colon in the range matter)

Below are my codes.

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Integer

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8.f150")
total = total + Application.Sum(rnge)

Next wkSht

MsgBox ("Total = ") & total

End Sub

"Gary Keramidas" wrote:

just created a new workbook and pasted your code in
added the 2 dim statements, total and rng, and the 2 lines between the for
and next of your code

i have a total of in column a of 260 on sheet1, 70 on sheet2 and 195 in
sheet3. this totals 525 and that's what i get,.

are you sure you set this line, Set rng = wkSht.Range("a8:a50"), in the for
next loop?

are you saying that if you copy and paste this code and run it it gives you
3* the column A total of sheet1?

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
Gary

Sorry. I have done EXACTLY what you have suggested. It still doesnt work.

(Although the total is not necessary INTEGER, it does not bother me for
testing purposes)

FYI, I had made it work by using the FOR.. NEXT statement, but I want to
know why can't work with FOR EACH.

Zhj23


"Gary Keramidas" wrote:

Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes. So when
you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in Sheet
1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values
appeared
in
a
column (F say) in each of the worksheets. My following codes do not
give
me
the right answer. Instead it sums only the first sheet, but output
triple
the
total value of the FIRST sheet and ignores the other 2 sheets. Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total










--

Dave Peterson


Gary Keramidas

FOR EACH statement
 
don't worry about taking up my time.

your line of code refers to sheet 1 even if you activate the next sheet.

that's why i added the wksht. in front changed it to Set rng =
wkSht.Range("a8:a50")
this way it refers to the range on the active sheet.

you could also use this if you don't want to use the set statement

total = total + Application.Sum(wkSht.Range("a8:a50"))

so it would look like this


Dim total As Double
Dim rng As Range
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
total = total + Application.Sum(wkSht.Range("a8:a50"))
Next wkSht

MsgBox ("Total = ") & total

End Sub

--


Gary


"zhj23" wrote in message
...
Dave:

With your codes I got the answer.

Yes. it is indeed a coincidence which dirves me crazy.

However, i have one more question:

If I use this statement, and drop the SET statement

total = total + Application.Sum(Range("f8.f150"))

It indeed gives me 3*total Sheet 1. (bcos I hv 3 sheets?)

Could you enlighten me. Thanks.

(Gary: sorry for taken so much of your time resulting from the
COINCIDENCE)


Zhj23




"Dave Peterson" wrote:

What makes you think that the total really isn't just 3 * the total in
sheet1.
Maybe it's just a coincidence???

Option Explicit

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Double

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8:f150")
total = total + Application.Sum(rnge)
MsgBox "Sheet " & wkSht.Name & " total: " & Application.Sum(rnge)
_
& vbLf & "Running total: " & total
Next wkSht

MsgBox ("Total = ") & total

End Sub

zhj23 wrote:

Gary

I did all you told, except my data is in Col F, which I don't think it
is
material.

Yes. I got 3* the total of Sheet 1 ONLY.

(and i don't think the dot and colon in the range matter)

Below are my codes.

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Integer

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8.f150")
total = total + Application.Sum(rnge)

Next wkSht

MsgBox ("Total = ") & total

End Sub

"Gary Keramidas" wrote:

just created a new workbook and pasted your code in
added the 2 dim statements, total and rng, and the 2 lines between
the for
and next of your code

i have a total of in column a of 260 on sheet1, 70 on sheet2 and 195
in
sheet3. this totals 525 and that's what i get,.

are you sure you set this line, Set rng = wkSht.Range("a8:a50"), in
the for
next loop?

are you saying that if you copy and paste this code and run it it
gives you
3* the column A total of sheet1?

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
Gary

Sorry. I have done EXACTLY what you have suggested. It still doesnt
work.

(Although the total is not necessary INTEGER, it does not bother me
for
testing purposes)

FYI, I had made it work by using the FOR.. NEXT statement, but I
want to
know why can't work with FOR EACH.

Zhj23


"Gary Keramidas" wrote:

Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed
this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes.
So when
you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in
Sheet
1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're
interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values
appeared
in
a
column (F say) in each of the worksheets. My following codes
do not
give
me
the right answer. Instead it sums only the first sheet, but
output
triple
the
total value of the FIRST sheet and ignores the other 2
sheets. Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total










--

Dave Peterson




zhj23

FOR EACH statement
 
Gary & Dave

A big thank you. It is clear now.

zhj23

"Gary Keramidas" wrote:

don't worry about taking up my time.

your line of code refers to sheet 1 even if you activate the next sheet.

that's why i added the wksht. in front changed it to Set rng =
wkSht.Range("a8:a50")
this way it refers to the range on the active sheet.

you could also use this if you don't want to use the set statement

total = total + Application.Sum(wkSht.Range("a8:a50"))

so it would look like this


Dim total As Double
Dim rng As Range
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
total = total + Application.Sum(wkSht.Range("a8:a50"))
Next wkSht

MsgBox ("Total = ") & total

End Sub

--


Gary


"zhj23" wrote in message
...
Dave:

With your codes I got the answer.

Yes. it is indeed a coincidence which dirves me crazy.

However, i have one more question:

If I use this statement, and drop the SET statement

total = total + Application.Sum(Range("f8.f150"))

It indeed gives me 3*total Sheet 1. (bcos I hv 3 sheets?)

Could you enlighten me. Thanks.

(Gary: sorry for taken so much of your time resulting from the
COINCIDENCE)


Zhj23




"Dave Peterson" wrote:

What makes you think that the total really isn't just 3 * the total in
sheet1.
Maybe it's just a coincidence???

Option Explicit

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Double

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8:f150")
total = total + Application.Sum(rnge)
MsgBox "Sheet " & wkSht.Name & " total: " & Application.Sum(rnge)
_
& vbLf & "Running total: " & total
Next wkSht

MsgBox ("Total = ") & total

End Sub

zhj23 wrote:

Gary

I did all you told, except my data is in Col F, which I don't think it
is
material.

Yes. I got 3* the total of Sheet 1 ONLY.

(and i don't think the dot and colon in the range matter)

Below are my codes.

Sub Total_test()

Dim wkSht As Worksheet
Dim rnge As Range
Dim total As Integer

total = 0
For Each wkSht In Worksheets
Set rnge = wkSht.Range("f8.f150")
total = total + Application.Sum(rnge)

Next wkSht

MsgBox ("Total = ") & total

End Sub

"Gary Keramidas" wrote:

just created a new workbook and pasted your code in
added the 2 dim statements, total and rng, and the 2 lines between
the for
and next of your code

i have a total of in column a of 260 on sheet1, 70 on sheet2 and 195
in
sheet3. this totals 525 and that's what i get,.

are you sure you set this line, Set rng = wkSht.Range("a8:a50"), in
the for
next loop?

are you saying that if you copy and paste this code and run it it
gives you
3* the column A total of sheet1?

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
Gary

Sorry. I have done EXACTLY what you have suggested. It still doesnt
work.

(Although the total is not necessary INTEGER, it does not bother me
for
testing purposes)

FYI, I had made it work by using the FOR.. NEXT statement, but I
want to
know why can't work with FOR EACH.

Zhj23


"Gary Keramidas" wrote:

Sub addsheets4()

Dim total As Integer ' <<<<<<<<<<<<<<<<<<<<<added this
Dim rng As Range ' <<<<<<<<<<<<<<<<<<<<<<added this
Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50") ' <<<<<<<< changed this
total = total + Application.Sum(rng) ' <<<<<changed
this

Next wkSht

MsgBox ("Total = ") & total

End Sub


--


Gary


"zhj23" wrote in message
...
Hi! Gary


Yes. I am very interested to know what is wrong with my codes.
So when
you
adopt my codes, did it work?

I tried, but it doesn't work. Still the triple of the values in
Sheet
1.

Thanks anyway.


zhj23

"Gary Keramidas" wrote:

i adapted your code instead of using mine, in case you're
interested

Sub addsheets()
Dim wkSht As Worksheet
Dim rng As Range
total = 0
For Each wkSht In Worksheets
Set rng = wkSht.Range("a8:a50")
total = total + Application.Sum(rng)
Next wkSht
MsgBox ("Total = ") & total
End Sub

--


Gary


"zhj23" wrote in message
...
I have 3 worksheets,wanted to find the total sum of the values
appeared
in
a
column (F say) in each of the worksheets. My following codes
do not
give
me
the right answer. Instead it sums only the first sheet, but
output
triple
the
total value of the FIRST sheet and ignores the other 2
sheets. Can
anyone
help to resolve this. Many thanks.

Dim wkSht As Worksheet
total = 0
For Each wkSht In Worksheets

total = total + Application.Sum(Range("f8.f150"))

Next wkSht

MsgBox ("Total = ") & total










--

Dave Peterson






All times are GMT +1. The time now is 07:31 AM.

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