Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / January 2006

Tip: Looking for answers? Try searching our database.

Problem with a very simple code in Visual basic

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Vepa - 25 Jan 2006 15:05 GMT
Hi,

I'm beginning my studies with Visual Basic on my Excel 2003 and I have a
problem with calculations concerning adding. I will write the source and I
hope somebody could help me. The problem is that the calculation below gives
me a result 34 if A=3 and B=4. However if I try to multiply these numbers the
program gives me the right answer..

Sub Investments()
A = InputBox("Enter domestic investment amount")
B = InputBox("Enter foreign investment amount")
TotalInvestment = A + B
MsgBox "The total investment= " & TotalInvestment
End Sub

Regards
Vepa
Chip Pearson - 25 Jan 2006 15:14 GMT
The problem is that A and B as string (text) variables, and the
"+" sign is the old way of concatenating (combining) strings.
Instead, try,

Dim A As Double
Dim B As Double
Dim C As Double
A = Application.InputBox(prompt:="Enter A:", Type:=1)
B = Application.InputBox(prompt:="Enter B:", Type:=1)
C = A + B

The Type:=1 argument restricts users to entering numbers. It
prevents non-numeric entry.

Signature

Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com

> Hi,
>
[quoted text clipped - 17 lines]
> Regards
> Vepa
Kris - 25 Jan 2006 15:26 GMT
Because input box returns string, not number, so conatenation of 3 and 4
gives 34.
Declare variables

dim a as double, b as double

or dim a as integer, b as integer.

It will convert it to numbers, however it will crash when user enters
not numbers.

So you can:

dim A as string, b as string

dim iA as integer, iB as integer

and using isNumber you can check if data enterd by user is a number and
after that convert it to integer

iA = cInt (A)

> Hi,
>
[quoted text clipped - 13 lines]
> Regards
> Vepa
brucks - 25 Jan 2006 15:32 GMT
Try this:

A = Val(InputBox("Enter domestic investment amount"))
B = Val(InputBox("Enter foreign investment amount"))
TotalInvestment = A + B

OR
TotalInvestment = Val(A) + Val(B)

OR
A = InputBox("Enter domestic investment amount",,,,,,1)
B = InputBox("Enter foreign investment amount",,,,,,1)

Either one of these should work.  The issue is that the InputBox returns
text values, not numeric unless you specify using the last arguement of "1"
which tells VBA the data being returned is numeric.  Also, in VBA, + and &
are concatenation functions for text, which is why you were getting 34
returned.

If you use either of the first two possible solutions, you will need to
check each response to see if they are numeric or not (you could use the
IsNumeric function to do so) before using the Val() function to ensure that
the inputs are indeed numeric in nature.

Hope this helps.

> Hi,
>
[quoted text clipped - 13 lines]
> Regards
> Vepa
Vepa - 25 Jan 2006 15:42 GMT
Thank you for your advices. They helped me a lot. Now back to learn more..

"brucks" kirjoitti:

> Try this:
>
[quoted text clipped - 39 lines]
> > Regards
> > Vepa
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.