View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Chip Pearson Chip Pearson is offline
external usenet poster
 
Posts: 7,247
Default "Match" function returns wrong value

Is there some way of wrapping the code in the window so that I can see the
entire code without having to scroll side to side? Or is it better to
leave
it as it is?


There is no autowrap feature. You can, however, split one logical line of
code into several separate physical lines of code using the
<space<underscore character sequence at the end of a physical line of
code. E..g,

Range _
("A1") _
..Value _
= _
123

is seen by VBA as

Range("A1").Value = 123

Note that there must be a space preceding the underscore.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
(email address is on the web site)



"DarrellK" wrote in message
...
Hi Dave,
I cannot believe I made such a basic error. I do know that to get an exact
match it is necessary to specify a "0" in the third field of the Match
function as I do this all the time in Excel spreadsheet cells, but I guess
the long code and the fact that I cannot see the entire line in the
window,
due to its length, caused me to make this mistake. Thanks again for
pointing
out this basic error.

Is there some way of wrapping the code in the window so that I can see the
entire code without having to scroll side to side? Or is it better to
leave
it as it is?

Thanks again,

Darrell

"Dave Peterson" wrote:

I would think with text, you'd be looking for an exact match.

I'd use something like:

Sub testmatch()
dim res as variant
res = application.match("Invision", _
Workbooks("Book1.xls").Sheets("Sheet1").Range("A:A "), 0)

if iserror(res) then
msgbox "Not found"
else
msgbox res
end if

End Sub

Notice the extra 0 in the =match() function.

ps. You don't need to activate the workbook for this to work. And it's
better
to include the extension (assuming the file has been saved).

DarrellK wrote:

Hi,
I am trying to simply return the position of a value in an array using
the
"Match" function and I seem to be getting an incorrect result.

I am using the following code:

Sub testmatch()
Workbooks("Book1").Activate
MsgBox (Application.WorksheetFunction.Match("Invision",
Workbooks("Book1").Sheets("Sheet1").Range("A:A")))
End Sub

"Invision" is in row 9 of column A. However, the MsgBox displays 284.
There
are entries in rows 2 through 363 if that is of any help.

I would be very grateful for any assitance you could provide. I am
using
Visual Basic 6.3 and MS Excel 2003 SP2.

Thanks.

Darrell


--

Dave Peterson