ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   If Statement (https://www.excelbanter.com/excel-programming/341809-if-statement.html)

zhj23

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


Stefano Gatto

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


Tom Ogilvy

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






David McRitchie

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









All times are GMT +1. The time now is 09:52 AM.

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