Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I would like to write a procedure that would test a single character in a
string contained in a worksheet cell to see if it's a number, then test another character in the same string to see if it's a letter. In this case, the string to test is located in Worksheets("dataEntry").Range("testCell") I would like to test the first character in the string in that cell to see if it's a number. I would like to test the second character to see if it's a letter. If either of these conditions returns false, I'd like the whole expression to be false. Thanks in advance. Paul |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
set rng = Worksheets("dataEntry").Range("testCell")
if isnumeric(left(rng,1)) and _ lcase(mid(rng,2,1)) < ucase(mid(rng(2,1)) then -- Regards, Tom Ogilvy "Paul James" wrote in message ... I would like to write a procedure that would test a single character in a string contained in a worksheet cell to see if it's a number, then test another character in the same string to see if it's a letter. In this case, the string to test is located in Worksheets("dataEntry").Range("testCell") I would like to test the first character in the string in that cell to see if it's a number. I would like to test the second character to see if it's a letter. If either of these conditions returns false, I'd like the whole expression to be false. Thanks in advance. Paul |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Paul,
Try this code With Worksheets("dataEntry").Range("testCell") If IsNumeric(Left(.Value, 1)) Then If IsText(Mid(.Value, 2, 1)) Then Debug.Print "Yes" End If End If End With Private Function IsText(val) As Boolean IsText = (val = "a" And val <= "z") Or _ (val = "A" And val <= "Z") End Function -- HTH Bob Phillips ... looking out across Poole Harbour to the Purbecks (remove nothere from the email address if mailing direct) "Paul James" wrote in message ... I would like to write a procedure that would test a single character in a string contained in a worksheet cell to see if it's a number, then test another character in the same string to see if it's a letter. In this case, the string to test is located in Worksheets("dataEntry").Range("testCell") I would like to test the first character in the string in that cell to see if it's a number. I would like to test the second character to see if it's a letter. If either of these conditions returns false, I'd like the whole expression to be false. Thanks in advance. Paul |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() "Tom Ogilvy" wrote in message ... if isnumeric(left(rng,1)) and _ lcase(mid(rng,2,1)) < ucase(mid(rng(2,1)) then Smart! |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
a$=yourcell
numvalue= asc(left(a$,1))+asc(mid(a$,1)) if numvalue 9+9 then combination is false --- Message posted from http://www.ExcelForum.com/ |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
My thanks to Tom and Bob.
One other question: I'd also like the expression to return true if the cell has no characters of any type in it. Can I do that by saying if rng < "" and_ if isnumeric(left(rng,1)) and _ lcase(mid(rng,2,1)) < ucase(mid(rng(2,1)) then ?? |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Wouldn't this return true if the entry was either 1a or a1, (which isn't
what I need)? "dadum1 " wrote in message ... a$=yourcell numvalue= asc(left(a$,1))+asc(mid(a$,1)) if numvalue 9+9 then combination is false --- Message posted from http://www.ExcelForum.com/ |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
if rng = "" or _
( isnumeric(left(rng,1)) and _ lcase(mid(rng,2,1)) < ucase(mid(rng(2,1))) then -- Regards, Tom Ogilvy Paul James wrote in message ... My thanks to Tom and Bob. One other question: I'd also like the expression to return true if the cell has no characters of any type in it. Can I do that by saying if rng < "" and_ if isnumeric(left(rng,1)) and _ lcase(mid(rng,2,1)) < ucase(mid(rng(2,1)) then ?? |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
if rng = ""
Of course - Duh. Thanks, Tom. |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Tom - the code you wrote works great:
if rng = "" or _ ( isnumeric(left(rng,1)) and _ lcase(mid(rng,2,1)) < ucase(mid(rng(2,1))) then I did find a typo in the last expression - (the one to the right of the inequality): ucase(mid(rng(2,1)) should be written as ucase(mid(rng,2,1)) Thanks again for your help. Paul |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Is the first character a number or letter | Excel Worksheet Functions | |||
testing for character strings within a cell | Excel Worksheet Functions | |||
Odd! Excel changes my letter character. Why? | Excel Discussion (Misc queries) | |||
change headers from letter to number/number to letter | Excel Worksheet Functions | |||
column header changed from letter to number, how return to letter | Excel Discussion (Misc queries) |