VBA Sum returns Wrong Format

C

code_hungry

If Anyone could give me a hand....

Cell E33 value is "$2,793.70"
Cell F33 value is "$450.00"
My code rounds up the result and returns the value 3244. I need the value
to be but I need it "3,243.70"

What do I have to change in the code below?

Thanks

Sub sum()
Dim MySum As Integer
Dim MyRange As Range

Set MyRange = ActiveSheet.Range("E33:F33")
MySum = Application.WorksheetFunction.sum(MyRange)
Range("F46").Value = MySum

End Sub
--
 
K

Keith R

If you are always going to use F46 as your destination cell, the simple
option is simply to format that cell.

If your code may dynamically place results in difference cells and you need
to format within VBA then the following might work for you. I suggest when
it comes to things that you can do manually but are trying to replicate in
code, use the macro recorder to give you a push in the right direction-
that's where this code comes from. Either select the cell in code, or change
the select statement to reflect your target range.

Selection.NumberFormat = "#,##0.00"

HTH,
Keith
 
R

Rick Rothstein \(MVP - VB\)

I think if you change your Sub's last statement to this, instead of what you
have, it will do what you want...

Range("F46").Value = FormatCurrency(MySum)

Rick
 
D

Dave Peterson

You declared MySum as an Integer. Make it Double.

ps. I wouldn't use Sum for the procedure name.
 
R

Rick Rothstein \(MVP - VB\)

Well, I must say, I am surprised that worked. On the VBA side of things, the
Currency data type does not contain the currency symbol or nor the thousands
separator (which can be seen by adding a Debug.Print MySum statement to the
subroutine).

While I am sure what you posted will do what the OP probably actually
wanted, I would note that answers using your Dim statement will not be the
same as those produced but the OP's original code. His Dim'ming the MySum
variable as Integer would mean no decimal dollars are returned to the
worksheet whereas your Currency data type will do so.

Rick
 
C

code_hungry

Thank you all for your reply. The Currency solution was the one that worked.
Because you were so quick to reply, I was able to give this project back to
my boss on the same day. He was happy.

Thanks again.
 
D

Dave Peterson

I would have used double.

code_hungry said:
Thank you all for your reply. The Currency solution was the one that worked.
Because you were so quick to reply, I was able to give this project back to
my boss on the same day. He was happy.

Thanks again.
 

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