Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 60
Default If Statement

I have a following few lines of VBA codes. With input n=6, why is that when I
test dn it DOESN'T work, but test d(n+0) it works, which gives j=4.

Thanks.

n = InputBox("n")

j = 0

Do While j < n
j = j + 1

d = (n * j) / 3

If d (n + 0) Then Exit Do

MsgBox ("d= ") & d & (" n= ") & n 'monitoring

Loop

MsgBox ("j= ") & j 'output

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 59
Default If Statement

I have the impression that if N is a Variant then N contains a string, not a
number, since Inputbox always return a string.

The expression N+0 will be forced to be a number, since N is "casted" to a
number. This can happen only if the user enters strings having only
characters among 0...9.

If N was an integer then assigning the return value of Inputbox would solve
your problem, but in this case you'd better handle the error in case the user
enters alphabetic data.

Excerpt from the Help file:

"Displays a prompt in a dialog box, waits for the user to input text or
click a button, and returns a String containing the contents of the text box."

I hope this helps you.
--
Stefano Gatto


"zhj23" wrote:

I have a following few lines of VBA codes. With input n=6, why is that when I
test dn it DOESN'T work, but test d(n+0) it works, which gives j=4.

Thanks.

n = InputBox("n")

j = 0

Do While j < n
j = j + 1

d = (n * j) / 3

If d (n + 0) Then Exit Do

MsgBox ("d= ") & d & (" n= ") & n 'monitoring

Loop

MsgBox ("j= ") & j 'output

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default If Statement

That would be true if he used

Application.InputBox (the Excel Inputbox), but the OP is using the VBA
Inputbox which doesn't have that argument. Perhaps you were suggesting
that the OP use the Application.Inputbox rather than the VBA Inputbox so he
could use that argument.

--
Regards,
Tom Ogilvy

"David McRitchie" wrote in message
...
Hi "zip23",
You should include the type, which is the last operand of InputBox
see your VBE HELP file. -- 1 for type requires a number

expression.InputBox(prompt, title , default, xPos, yPos, helpfile, type)

Use of Option Explicit at the top of your module
would have required you to dimension n which could be
Dim n as Long
You might also consider entering a default value, if there is
one to simplify usage.

Suggest in the VBE Tools, Options, Editor
[x] Require Variable Definition

http://www.mvps.org/dmcritchie/excel/inputbox.htm
---
HTH,
David McRitchie, Microsoft MVP - Excel [site changed Nov. 2001]
My Excel Pages: http://www.mvps.org/dmcritchie/excel/excel.htm
Search Page: http://www.mvps.org/dmcritchie/excel/search.htm

"Stefano Gatto" wrote in message

...
I have the impression that if N is a Variant then N contains a string,

not a
number, since Inputbox always return a string.

The expression N+0 will be forced to be a number, since N is "casted" to

a
number. This can happen only if the user enters strings having only
characters among 0...9.

If N was an integer then assigning the return value of Inputbox would

solve
your problem, but in this case you'd better handle the error in case the

user
enters alphabetic data.

Excerpt from the Help file:

"Displays a prompt in a dialog box, waits for the user to input text or
click a button, and returns a String containing the contents of the text

box."

I hope this helps you.
--
Stefano Gatto


"zhj23" wrote:

I have a following few lines of VBA codes. With input n=6, why is that

when I
test dn it DOESN'T work, but test d(n+0) it works, which gives j=4.

Thanks.

n = InputBox("n")

j = 0

Do While j < n
j = j + 1

d = (n * j) / 3

If d (n + 0) Then Exit Do

MsgBox ("d= ") & d & (" n= ") & n 'monitoring

Loop

MsgBox ("j= ") & j 'output





  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 903
Default If Statement

Hi Tom,
I guess that explains why I had trouble with it, before creating a page.

Now that I see the difference, why would anyone want to use the
Inputbox Function instead of the Inputbox Method

Also I notice the Function described as a textbox, and the Method as a dialog box.
They both look the same and have a titlebar that can be changed.
--
HTH,
David McRitchie, Microsoft MVP - Excel [site changed Nov. 2001]
My Excel Pages: http://www.mvps.org/dmcritchie/excel/excel.htm
Search Page: http://www.mvps.org/dmcritchie/excel/search.htm

"Tom Ogilvy" wrote in message ...
That would be true if he used

Application.InputBox (the Excel Inputbox), but the OP is using the VBA
Inputbox which doesn't have that argument. Perhaps you were suggesting
that the OP use the Application.Inputbox rather than the VBA Inputbox so he
could use that argument.

--
Regards,
Tom Ogilvy

"David McRitchie" wrote in message
...
Hi "zip23",
You should include the type, which is the last operand of InputBox
see your VBE HELP file. -- 1 for type requires a number

expression.InputBox(prompt, title , default, xPos, yPos, helpfile, type)

Use of Option Explicit at the top of your module
would have required you to dimension n which could be
Dim n as Long
You might also consider entering a default value, if there is
one to simplify usage.

Suggest in the VBE Tools, Options, Editor
[x] Require Variable Definition

http://www.mvps.org/dmcritchie/excel/inputbox.htm
---
HTH,
David McRitchie, Microsoft MVP - Excel [site changed Nov. 2001]
My Excel Pages: http://www.mvps.org/dmcritchie/excel/excel.htm
Search Page: http://www.mvps.org/dmcritchie/excel/search.htm

"Stefano Gatto" wrote in message

...
I have the impression that if N is a Variant then N contains a string,

not a
number, since Inputbox always return a string.

The expression N+0 will be forced to be a number, since N is "casted" to

a
number. This can happen only if the user enters strings having only
characters among 0...9.

If N was an integer then assigning the return value of Inputbox would

solve
your problem, but in this case you'd better handle the error in case the

user
enters alphabetic data.

Excerpt from the Help file:

"Displays a prompt in a dialog box, waits for the user to input text or
click a button, and returns a String containing the contents of the text

box."

I hope this helps you.
--
Stefano Gatto


"zhj23" wrote:

I have a following few lines of VBA codes. With input n=6, why is that

when I
test dn it DOESN'T work, but test d(n+0) it works, which gives j=4.

Thanks.

n = InputBox("n")

j = 0

Do While j < n
j = j + 1

d = (n * j) / 3

If d (n + 0) Then Exit Do

MsgBox ("d= ") & d & (" n= ") & n 'monitoring

Loop

MsgBox ("j= ") & j 'output







Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
IF statement inside a SUMIF statement.... or alternative method Sungibungi Excel Worksheet Functions 3 December 4th 09 06:22 PM
Reconcile Bank statement & Credit card statement & accounting data Bklynhyc Excel Worksheet Functions 0 October 7th 09 09:07 PM
Embedding an OR statement in an IF statement efficiently Chatnoir11 Excel Discussion (Misc queries) 4 February 2nd 09 08:12 PM
Can an If statement answer an If statement? M.A.Tyler Excel Discussion (Misc queries) 2 June 24th 07 04:14 AM
appending and IF statement to an existing IF statement spence Excel Worksheet Functions 1 February 28th 06 11:00 PM


All times are GMT +1. The time now is 11:47 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"