

October 18, 2018

I need to test the string that will be entered into an InputBox to detect if there are any numbers in the string, eg. AB4C, 9hgTRe, CvFgr54Xt etc - these need to be caught. The string can be of any length.
I have a feeling that this may involve Regex but I hope not 🙂
Thanks!


November 8, 2013

You can simply use the Like operator:
If "aaz1" like "*#*" then 'it has digits
But best is to restrict what users are allowed to type.
Application.InputBox is different than just InputBox, see this article. The first calls the InputBox method, the second calls the InputBox function.
You can restrict values to text only, or to numbers, ranges, or combinations.
For complex restrictions, you can take a look at this article, with user forms, this allows you to force users to type values in a specific range.


October 18, 2018

Thanks mate, I didn't know there were two types of InputBox ... <sigh>
Anyway I tested it and it didn't work in the sense that it allowed me to enter a number when I suppose it shouldn't have.
Here is my code:
Dim TestString As Variant
TestString = Application.InputBox(prompt:="Please enter your text", Title:="Export File Data", Type:=2)
MsgBox "You have entered: " & TestString
This didn't object to me entering a number. What should have happened? What am I doing wrong?


November 8, 2013

The input box will return a text string, even if you type only numbers in InputBox, even if Type:=2.
you can test the type of the result with : MsgBox TypeName(TestString)
Type:=2 will return String, no matter what chars you type, if Type:=1 will return Double.
You wil have to check the result with: If "aaz1" like "*#*", or use the link I sent to use a userform instead to restrict the input to alpha only.


October 18, 2018

OK so that's a fail - I'm not sure about the purpose of Application.InputBox or why its different to the InputBox function after all. According to MS the Type parameter "Specifies the return data type. If this argument is omitted, the dialog box returns text.", but it seems it always returns text no matter what. I don't see how this can enable you to "... restrict values to text only, or to numbers, ranges, or combinations."
Anyway, I'll have to come up with something else ...
1 Guest(s)
