View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
DarrellK DarrellK is offline
external usenet poster
 
Posts: 7
Default "Match" function returns wrong value

Hi Chip,
Thanks. I may try that.

I have another problem which just occured. I am getting an "Unable to get
Vlookup property of the worksheet function class" error with the following
line of code:

Cells(i, j) = Application.WorksheetFunction.VLookup(temp1, Workbooks("2006
Jan-Sep CAPEX Loadsheet Actuals.xls").Sheets("Worksheet
Totals").Range("F:CO"), 11 + j - 15, False)

Note that i=4, j=15, temp1 is "E-Tools (E-HR)" and there is data in columns
F through CO in rows 1 through 363.

Thanks.

Darrell
------------------

"Chip Pearson" wrote:

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