+ Reply to Thread
Results 1 to 5 of 5

Problem with a very simple code in Visual basic

  1. #1
    Vepa
    Guest

    Problem with a very simple code in Visual basic

    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



  2. #2
    Chip Pearson
    Guest

    Re: Problem with a very simple code in Visual basic

    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.

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



    "Vepa" <[email protected]> wrote in message
    news:[email protected]...
    > 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
    >
    >




  3. #3
    Kris
    Guest

    Re: Problem with a very simple code in Visual basic

    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)







    Vepa wrote:
    > 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
    >
    >


  4. #4
    brucks
    Guest

    RE: Problem with a very simple code in Visual basic

    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.

    "Vepa" wrote:

    > 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
    >
    >


  5. #5
    Vepa
    Guest

    RE: Problem with a very simple code in Visual basic

    Thank you for your advices. They helped me a lot. Now back to learn more..

    "brucks" kirjoitti:

    > 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.
    >
    > "Vepa" wrote:
    >
    > > 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
    > >
    > >


+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1