ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   "value" works in sheet, not vba (https://www.excelbanter.com/excel-programming/305560-value-works-sheet-not-vba.html)

mike allen[_2_]

"value" works in sheet, not vba
 
why would a formula on a spreadsheet work, while reproducing it in code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH THINGS THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the other text
(text only b/c it is a formula result---from a number of all things).
reformatting cells does no good. if i can at least get the above problem
worked out, i can get by for now. thanks, (disdraught w/ excel) mike allen



Bernie Deitrick

"value" works in sheet, not vba
 
Mike,

The default property of a range object is .Value:

loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)


So, your code sets loanorig to the Value of Cell B2 on worksheet "main"

Try this:

loanorig = Sheets("main").Range("B2").Value
loanorigrow = Application.Match(loanorig, _
Sheets("loan").Range("a1:a3745"), 0)

HTH,
Bernie
MS Excel MVP
"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it in code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH THINGS THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the other

text
(text only b/c it is a formula result---from a number of all things).
reformatting cells does no good. if i can at least get the above problem
worked out, i can get by for now. thanks, (disdraught w/ excel) mike

allen





Bernie Deitrick

"value" works in sheet, not vba
 
Mike,

On re-reading your post, I realized that you may need to use something like:

loanorig = CStr(Sheets("main").Range("B2").Value)

or, more probably,

loanorig = CLng(Sheets("main").Range("B2").Value)

It depends on how your data is acutally entered.

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it in code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH THINGS THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the other

text
(text only b/c it is a formula result---from a number of all things).
reformatting cells does no good. if i can at least get the above problem
worked out, i can get by for now. thanks, (disdraught w/ excel) mike

allen





Brian

"value" works in sheet, not vba
 
Try This:
Set MyRange = Sheets("loan").Range("A1:A3745")
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.WorksheetFunction.Match
(loanorig,MyRange, 0)


-----Original Message-----
why would a formula on a spreadsheet work, while

reproducing it in code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing

and transforming
text to values and vice versa. ALL I AM TRYING TO DO IS

MATCH THINGS THAT
LOOK ALIKE, but am failing miserably b/c one may be a

number, the other text
(text only b/c it is a formula result---from a number of

all things).
reformatting cells does no good. if i can at least get

the above problem
worked out, i can get by for now. thanks, (disdraught w/

excel) mike allen


.


mike allen[_2_]

"value" works in sheet, not vba
 
Brian, thanks for the help, but unfortunately, that did not get it.
"unable to get the Match property of the WorksheetFunction class" shows up.
It appears as though you have the same thing as me, except in different
order. the range is the same, B2 is the same, and the match function inputs
are the same except for the "worksheetfunction." insertion. if i take out
that insertion, i get just what mine gets: error 2042 on the 'match' line.

the problem is B2 is a formula that takes all digits of another cell except
the first digit: =right(A2,len(A2)-1) this makes B2 text, while A2 is a
number. I can find a match for A2 easily, but not B2, even though they are
both clearly in the array of thousands. the only thing that works is if i
wrap Value around the formula in B2 =value(right(A2,len(A2)-1)) on the
spreadsheet, but there are reasons i will not be able to do that every time.
I need to be able to do the same thing done in code. thanks, mike allen


"Brian" wrote in message
...
Try This:
Set MyRange = Sheets("loan").Range("A1:A3745")
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.WorksheetFunction.Match
(loanorig,MyRange, 0)


-----Original Message-----
why would a formula on a spreadsheet work, while

reproducing it in code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing

and transforming
text to values and vice versa. ALL I AM TRYING TO DO IS

MATCH THINGS THAT
LOOK ALIKE, but am failing miserably b/c one may be a

number, the other text
(text only b/c it is a formula result---from a number of

all things).
reformatting cells does no good. if i can at least get

the above problem
worked out, i can get by for now. thanks, (disdraught w/

excel) mike allen


.




mike allen[_2_]

"value" works in sheet, not vba
 
Bernie, thanks for the help, but unfortunately, that did not get it. i get
'error 2042' using Cstr and 'overflow' using CLng.

the problem is B2 is a formula that takes all digits of another cell except
the first digit: =right(A2,len(A2)-1) this makes B2 text, while A2 is a
number. I can find a match for A2 easily, but not B2, even though they are
both clearly in the array of thousands. the only thing that works is if i
wrap Value around the formula in B2 on the spreadsheet, but there are
reasons i will not be able to do that every time. I need to be able to do
the same thing in code. thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

On re-reading your post, I realized that you may need to use something

like:

loanorig = CStr(Sheets("main").Range("B2").Value)

or, more probably,

loanorig = CLng(Sheets("main").Range("B2").Value)

It depends on how your data is acutally entered.

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it in code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH THINGS

THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the other

text
(text only b/c it is a formula result---from a number of all things).
reformatting cells does no good. if i can at least get the above

problem
worked out, i can get by for now. thanks, (disdraught w/ excel) mike

allen







Bernie Deitrick

"value" works in sheet, not vba
 
Mike,

I'm sorry - I should have told you that you need to dimension your variable
first:

Dim loanorig As Long
loanorig = CLng(Sheets("main").Range("B2").Value)

That makes it into a number, no doubt.

BUT, since you are already using VALUE in cell B2, then you don't need to do
that: simply

Dim loanorig As Long
loanorig = Range("B2").Value

Don't worry, we'll get you to a working solution....

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
Bernie, thanks for the help, but unfortunately, that did not get it. i

get
'error 2042' using Cstr and 'overflow' using CLng.

the problem is B2 is a formula that takes all digits of another cell

except
the first digit: =right(A2,len(A2)-1) this makes B2 text, while A2 is

a
number. I can find a match for A2 easily, but not B2, even though they

are
both clearly in the array of thousands. the only thing that works is if i
wrap Value around the formula in B2 on the spreadsheet, but there are
reasons i will not be able to do that every time. I need to be able to do
the same thing in code. thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

On re-reading your post, I realized that you may need to use something

like:

loanorig = CStr(Sheets("main").Range("B2").Value)

or, more probably,

loanorig = CLng(Sheets("main").Range("B2").Value)

It depends on how your data is acutally entered.

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it in

code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and

transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH THINGS

THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the

other
text
(text only b/c it is a formula result---from a number of all things).
reformatting cells does no good. if i can at least get the above

problem
worked out, i can get by for now. thanks, (disdraught w/ excel) mike

allen









Bernie Deitrick

"value" works in sheet, not vba
 
Mike,

In addition, you might want to dimension loanorig as a Double rather than a
Long....

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
Bernie, thanks for the help, but unfortunately, that did not get it. i

get
'error 2042' using Cstr and 'overflow' using CLng.

the problem is B2 is a formula that takes all digits of another cell

except
the first digit: =right(A2,len(A2)-1) this makes B2 text, while A2 is

a
number. I can find a match for A2 easily, but not B2, even though they

are
both clearly in the array of thousands. the only thing that works is if i
wrap Value around the formula in B2 on the spreadsheet, but there are
reasons i will not be able to do that every time. I need to be able to do
the same thing in code. thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

On re-reading your post, I realized that you may need to use something

like:

loanorig = CStr(Sheets("main").Range("B2").Value)

or, more probably,

loanorig = CLng(Sheets("main").Range("B2").Value)

It depends on how your data is acutally entered.

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it in

code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and

transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH THINGS

THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the

other
text
(text only b/c it is a formula result---from a number of all things).
reformatting cells does no good. if i can at least get the above

problem
worked out, i can get by for now. thanks, (disdraught w/ excel) mike

allen









Tom Ogilvy

"value" works in sheet, not vba
 
Dim loanorig as Double
Dim loanorigrow as Variant
Dim rng as Range
set rng = Sheets("loan").Range("a1:a3745")
loanorig = Sheets("main").Range("b2").Value
loanorigrow = Application.Match(loanorig.Value, _
rng, 0)

if iserror(loanorigrow) then
msgbox "No match made"
else
msgbox "Results are row " & rng(loanorigrow).Row
End if


you can use loanorigrow directly to show the row, but this is only because
the range starts in row 1. The method shown is more flexible.

--
Regards,
Tom Ogilvy

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it in code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH THINGS THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the other

text
(text only b/c it is a formula result---from a number of all things).
reformatting cells does no good. if i can at least get the above problem
worked out, i can get by for now. thanks, (disdraught w/ excel) mike

allen





mike allen[_2_]

"value" works in sheet, not vba
 
as Double works. i had tried dim as text, as long... thank you. i do
have one more real dilemma with this process, though. what if A1 has a "#"
at the end of it? like: 548832# some of the cells will have nothing but
numbers, some will have letters and/or symbols in them. if they have
letters/symbols (truly text format), my old way works. if they have only
numbers in the string, your way works (dim as double). i need something
that will work on both. any thoughts? thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

In addition, you might want to dimension loanorig as a Double rather than

a
Long....

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
Bernie, thanks for the help, but unfortunately, that did not get it. i

get
'error 2042' using Cstr and 'overflow' using CLng.

the problem is B2 is a formula that takes all digits of another cell

except
the first digit: =right(A2,len(A2)-1) this makes B2 text, while A2

is
a
number. I can find a match for A2 easily, but not B2, even though they

are
both clearly in the array of thousands. the only thing that works is if

i
wrap Value around the formula in B2 on the spreadsheet, but there are
reasons i will not be able to do that every time. I need to be able to

do
the same thing in code. thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

On re-reading your post, I realized that you may need to use something

like:

loanorig = CStr(Sheets("main").Range("B2").Value)

or, more probably,

loanorig = CLng(Sheets("main").Range("B2").Value)

It depends on how your data is acutally entered.

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it in

code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and

transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH

THINGS
THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the

other
text
(text only b/c it is a formula result---from a number of all

things).
reformatting cells does no good. if i can at least get the above

problem
worked out, i can get by for now. thanks, (disdraught w/ excel)

mike
allen











Tom Ogilvy

"value" works in sheet, not vba
 
When match is not successful, if you use worksheetfunction, it raises the
trappable error you cite. If you don't use worksheet function it returns
#N/A just like in the worksheet (error 2042 is the error value of #N/A -
cvErr(xlErrNA) returns error 2042)

See my other post for a method that should work.

--
Regards,
Tom Ogilvy

"mike allen" wrote in message
...
Brian, thanks for the help, but unfortunately, that did not get it.
"unable to get the Match property of the WorksheetFunction class" shows

up.
It appears as though you have the same thing as me, except in different
order. the range is the same, B2 is the same, and the match function

inputs
are the same except for the "worksheetfunction." insertion. if i take out
that insertion, i get just what mine gets: error 2042 on the 'match' line.

the problem is B2 is a formula that takes all digits of another cell

except
the first digit: =right(A2,len(A2)-1) this makes B2 text, while A2 is

a
number. I can find a match for A2 easily, but not B2, even though they

are
both clearly in the array of thousands. the only thing that works is if i
wrap Value around the formula in B2 =value(right(A2,len(A2)-1)) on the
spreadsheet, but there are reasons i will not be able to do that every

time.
I need to be able to do the same thing done in code. thanks, mike allen


"Brian" wrote in message
...
Try This:
Set MyRange = Sheets("loan").Range("A1:A3745")
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.WorksheetFunction.Match
(loanorig,MyRange, 0)


-----Original Message-----
why would a formula on a spreadsheet work, while

reproducing it in code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing

and transforming
text to values and vice versa. ALL I AM TRYING TO DO IS

MATCH THINGS THAT
LOOK ALIKE, but am failing miserably b/c one may be a

number, the other text
(text only b/c it is a formula result---from a number of

all things).
reformatting cells does no good. if i can at least get

the above problem
worked out, i can get by for now. thanks, (disdraught w/

excel) mike allen


.






Tom Ogilvy

"value" works in sheet, not vba
 
Dim loanorig as Variant
Dim loanorigrow as Variant
Dim rng as Range
set rng = Sheets("loan").Range("a1:a3745")
loanorig = Sheets("main").Range("b2").Value
if isnumeric(loanorig) then
loanorigrow = Application.Match(cdbl(loanorig), _
rng, 0)
else
loanorigrow = Application.Match(loanorig, rng,0)
End if

if iserror(loanorigrow) then
msgbox "No match made"
else
msgbox "Results are row " & rng(loanorigrow).Row
End if


--
Regards,
Tom Ogilvy

"mike allen" wrote in message
...
as Double works. i had tried dim as text, as long... thank you. i do
have one more real dilemma with this process, though. what if A1 has a

"#"
at the end of it? like: 548832# some of the cells will have nothing

but
numbers, some will have letters and/or symbols in them. if they have
letters/symbols (truly text format), my old way works. if they have only
numbers in the string, your way works (dim as double). i need something
that will work on both. any thoughts? thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

In addition, you might want to dimension loanorig as a Double rather

than
a
Long....

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
Bernie, thanks for the help, but unfortunately, that did not get it.

i
get
'error 2042' using Cstr and 'overflow' using CLng.

the problem is B2 is a formula that takes all digits of another cell

except
the first digit: =right(A2,len(A2)-1) this makes B2 text, while

A2
is
a
number. I can find a match for A2 easily, but not B2, even though

they
are
both clearly in the array of thousands. the only thing that works is

if
i
wrap Value around the formula in B2 on the spreadsheet, but there are
reasons i will not be able to do that every time. I need to be able

to
do
the same thing in code. thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

On re-reading your post, I realized that you may need to use

something
like:

loanorig = CStr(Sheets("main").Range("B2").Value)

or, more probably,

loanorig = CLng(Sheets("main").Range("B2").Value)

It depends on how your data is acutally entered.

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it in

code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and

transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH

THINGS
THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the

other
text
(text only b/c it is a formula result---from a number of all

things).
reformatting cells does no good. if i can at least get the above
problem
worked out, i can get by for now. thanks, (disdraught w/ excel)

mike
allen













Tom Ogilvy

"value" works in sheet, not vba
 
didn't get you original completely cleaned up

loanorigrow = Application.Match(loanorig.Value, _


should not have the value on the end

loanorigrow = Application.Match(loanorig, _

--
Regards,
Tom Ogilvy


"Tom Ogilvy" wrote in message
...
Dim loanorig as Double
Dim loanorigrow as Variant
Dim rng as Range
set rng = Sheets("loan").Range("a1:a3745")
loanorig = Sheets("main").Range("b2").Value
loanorigrow = Application.Match(loanorig.Value, _
rng, 0)

if iserror(loanorigrow) then
msgbox "No match made"
else
msgbox "Results are row " & rng(loanorigrow).Row
End if


you can use loanorigrow directly to show the row, but this is only because
the range starts in row 1. The method shown is more flexible.

--
Regards,
Tom Ogilvy

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it in code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH THINGS

THAT
LOOK ALIKE, but am failing miserably b/c one may be a number, the other

text
(text only b/c it is a formula result---from a number of all things).
reformatting cells does no good. if i can at least get the above

problem
worked out, i can get by for now. thanks, (disdraught w/ excel) mike

allen







mike allen[_2_]

"value" works in sheet, not vba
 
tom, bernie, brian. thanks so much for your help. tom, i got your other
replies just after i got this one, thx. this seems to cover it all. the
most interesting thing about this code is i can omit the Dim's and type the
range directly into match formula and it still works, but if i use
application.isnumber vs. isnumeric, (which is what i would have done had i
thought about this process, along w/ the above ill-advised shortcuts), it
doesn't work. apparent numbers that are results of formulas such as
=RIGHT()... show FALSE when spreadsheet formula =isnumber(B2) is written,
but are true in code w/: if isnumeric... why are application.isnumber (or
=isnumber()) and isnumeric so different? thanks again, mike allen
"Tom Ogilvy" wrote in message
...
Dim loanorig as Variant
Dim loanorigrow as Variant
Dim rng as Range
set rng = Sheets("loan").Range("a1:a3745")
loanorig = Sheets("main").Range("b2").Value
if isnumeric(loanorig) then
loanorigrow = Application.Match(cdbl(loanorig), _
rng, 0)
else
loanorigrow = Application.Match(loanorig, rng,0)
End if

if iserror(loanorigrow) then
msgbox "No match made"
else
msgbox "Results are row " & rng(loanorigrow).Row
End if


--
Regards,
Tom Ogilvy

"mike allen" wrote in message
...
as Double works. i had tried dim as text, as long... thank you. i do
have one more real dilemma with this process, though. what if A1 has a

"#"
at the end of it? like: 548832# some of the cells will have nothing

but
numbers, some will have letters and/or symbols in them. if they have
letters/symbols (truly text format), my old way works. if they have

only
numbers in the string, your way works (dim as double). i need something
that will work on both. any thoughts? thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

In addition, you might want to dimension loanorig as a Double rather

than
a
Long....

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
Bernie, thanks for the help, but unfortunately, that did not get

it.
i
get
'error 2042' using Cstr and 'overflow' using CLng.

the problem is B2 is a formula that takes all digits of another cell
except
the first digit: =right(A2,len(A2)-1) this makes B2 text, while

A2
is
a
number. I can find a match for A2 easily, but not B2, even though

they
are
both clearly in the array of thousands. the only thing that works

is
if
i
wrap Value around the formula in B2 on the spreadsheet, but there

are
reasons i will not be able to do that every time. I need to be able

to
do
the same thing in code. thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

On re-reading your post, I realized that you may need to use

something
like:

loanorig = CStr(Sheets("main").Range("B2").Value)

or, more probably,

loanorig = CLng(Sheets("main").Range("B2").Value)

It depends on how your data is acutally entered.

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing it

in
code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and
transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH

THINGS
THAT
LOOK ALIKE, but am failing miserably b/c one may be a number,

the
other
text
(text only b/c it is a formula result---from a number of all

things).
reformatting cells does no good. if i can at least get the

above
problem
worked out, i can get by for now. thanks, (disdraught w/ excel)

mike
allen















Tom Ogilvy

"value" works in sheet, not vba
 
Isnumber checks if the value is stored as a number. Isnumeric checks if it
can be treated like a number (in your parlance, does it look like a number).
The second is provided so you can check before you try to convert something
to a number that can not be converted (as one example).

--
Regards,
Tom Ogilvy

"mike allen" wrote in message
...
tom, bernie, brian. thanks so much for your help. tom, i got your other
replies just after i got this one, thx. this seems to cover it all. the
most interesting thing about this code is i can omit the Dim's and type

the
range directly into match formula and it still works, but if i use
application.isnumber vs. isnumeric, (which is what i would have done had i
thought about this process, along w/ the above ill-advised shortcuts), it
doesn't work. apparent numbers that are results of formulas such as
=RIGHT()... show FALSE when spreadsheet formula =isnumber(B2) is written,
but are true in code w/: if isnumeric... why are application.isnumber

(or
=isnumber()) and isnumeric so different? thanks again, mike allen
"Tom Ogilvy" wrote in message
...
Dim loanorig as Variant
Dim loanorigrow as Variant
Dim rng as Range
set rng = Sheets("loan").Range("a1:a3745")
loanorig = Sheets("main").Range("b2").Value
if isnumeric(loanorig) then
loanorigrow = Application.Match(cdbl(loanorig), _
rng, 0)
else
loanorigrow = Application.Match(loanorig, rng,0)
End if

if iserror(loanorigrow) then
msgbox "No match made"
else
msgbox "Results are row " & rng(loanorigrow).Row
End if


--
Regards,
Tom Ogilvy

"mike allen" wrote in message
...
as Double works. i had tried dim as text, as long... thank you. i

do
have one more real dilemma with this process, though. what if A1 has

a
"#"
at the end of it? like: 548832# some of the cells will have

nothing
but
numbers, some will have letters and/or symbols in them. if they have
letters/symbols (truly text format), my old way works. if they have

only
numbers in the string, your way works (dim as double). i need

something
that will work on both. any thoughts? thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

In addition, you might want to dimension loanorig as a Double rather

than
a
Long....

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
Bernie, thanks for the help, but unfortunately, that did not get

it.
i
get
'error 2042' using Cstr and 'overflow' using CLng.

the problem is B2 is a formula that takes all digits of another

cell
except
the first digit: =right(A2,len(A2)-1) this makes B2 text,

while
A2
is
a
number. I can find a match for A2 easily, but not B2, even though

they
are
both clearly in the array of thousands. the only thing that works

is
if
i
wrap Value around the formula in B2 on the spreadsheet, but there

are
reasons i will not be able to do that every time. I need to be

able
to
do
the same thing in code. thanks, mike allen

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
Mike,

On re-reading your post, I realized that you may need to use

something
like:

loanorig = CStr(Sheets("main").Range("B2").Value)

or, more probably,

loanorig = CLng(Sheets("main").Range("B2").Value)

It depends on how your data is acutally entered.

HTH,
Bernie
MS Excel MVP

"mike allen" wrote in message
...
why would a formula on a spreadsheet work, while reproducing

it
in
code
doesn't? i must be writing code incorrectly.

spreadsheet formula:
=MATCH(VALUE(B2),loan!$A$1:$A$3745,0)

code:
loanorig = Sheets("main").Range("b2")
loanorigrow = Application.Match(loanorig.Value,
Sheets("loan").Range("a1:a3745"), 0)

any thoughts? i am really having problems w/ comparing and
transforming
text to values and vice versa. ALL I AM TRYING TO DO IS MATCH
THINGS
THAT
LOOK ALIKE, but am failing miserably b/c one may be a number,

the
other
text
(text only b/c it is a formula result---from a number of all
things).
reformatting cells does no good. if i can at least get the

above
problem
worked out, i can get by for now. thanks, (disdraught w/

excel)
mike
allen

















EnigmaCDE

"value" works in sheet, not vba
 
I am having trouble referencing a cell (or range) .value property from
cell that is returning #N/A (Error 2042) as a result of a faile
formula. The following code fails (sometimes):

If Range("C13").value = "BOCES" THEN
.....
END IF

Cell C13 has a VLookup formula that sometimes returns #N/A instead of
valid lookup value. Oddly enough when the lookup is successful the
the content of Cell C13 is "text" and the code works. However, whe
the formula is unsuccessful then it returns #N/A (Error 2042) which i
an "error object" instead of "text". Consequently my code raises a
"error 13 - type mismatch". I'm suprised to find a function that ca
change it's return type on the fly.

Anyway here is how I was able to make it work.

Dim MyValue as variant
MyValue = Range("C13").value
if MyValue = "BOCES" THEN
....
END IF

Does anyone have a better way to get around this problem???

--
Message posted from http://www.ExcelForum.com


Dave Peterson[_3_]

"value" works in sheet, not vba
 
Either check for the error:

if iserror(range("c13").value) then
'do what an error would do
else
if range("c13").value = "BOCES" then
'do ...
end if
end if


or use the .text property:

if range("c13").text = "BOCES" then



"EnigmaCDE <" wrote:

I am having trouble referencing a cell (or range) .value property from a
cell that is returning #N/A (Error 2042) as a result of a failed
formula. The following code fails (sometimes):

If Range("C13").value = "BOCES" THEN
....
END IF

Cell C13 has a VLookup formula that sometimes returns #N/A instead of a
valid lookup value. Oddly enough when the lookup is successful then
the content of Cell C13 is "text" and the code works. However, when
the formula is unsuccessful then it returns #N/A (Error 2042) which is
an "error object" instead of "text". Consequently my code raises an
"error 13 - type mismatch". I'm suprised to find a function that can
change it's return type on the fly.

Anyway here is how I was able to make it work.

Dim MyValue as variant
MyValue = Range("C13").value
if MyValue = "BOCES" THEN
...
END IF

Does anyone have a better way to get around this problem????

---
Message posted from http://www.ExcelForum.com/


--

Dave Peterson



All times are GMT +1. The time now is 02:23 PM.

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