vlookup with iserror

W

wensiang

Hi, all.

I have the following code which will take a string and search for it in
another worksheet.

once found, it will retrieve the next columns numeric figure.

Function ReplaceValue(ByVal AccStr As String) As Double

'This function will replace the column with the amount found in the
another excel worksheetdata

Dim Amt As Variant

ReplaceValue = 0

Dim Table As Range
Set Table = ThisWorkbook.Worksheets("Sheet").Range("A1:B15000")

Amt = WorksheetFunction.VLookup(AccStr, Table, 2, False)

If IsError(Amt) Then
ReplaceValue = 0
Else
ReplaceValue = Amt
End If

End Function

If found, it will retrieve the figure. Not found, the code is suppose
to returns 0. but the cell is showing '#VALUE!'. Anyone have any
advise?

Thanks.
 
B

Bob Phillips

Function ReplaceValue(ByVal AccStr As String) As Double

'This function will replace the column with the amount found in the another
excel worksheetdata

Dim Amt As Variant

ReplaceValue = 0

Dim Table As Range
Set Table = ThisWorkbook.Worksheets("Sheet3").Range("A1:B15000")

Amt = Application.VLookup(AccStr, Table, 2, False)

If IsError(Amt) Then
ReplaceValue = 0
Else
ReplaceValue = Amt
End If

End Function



--
HTH

Bob Phillips

(remove nothere from email address if mailing direct)
 
D

Dave Peterson

Try changing this:
Amt = WorksheetFunction.VLookup(AccStr, Table, 2, False)
to
Amt = application.VLookup(AccStr, Table, 2, False)

worksheetfunction.vlookup() causes a run time error that you have to program
around.

application.vlookup() returns an error that you can check.

If you really wanted to use worksheetfunction.vlookup(), you could use something
like:

On Error Resume Next
Amt = WorksheetFunction.VLookup(AccStr, Table, 2, False)
If Err.Number <> 0 Then
amt = 0
err.clear
end if

ReplaceValue = Amt
 
D

Don Guillett

It might help if you identified the sheet. Why not just use the vlookup
function.
 
W

wensiang

hi, Bob. your solution works. thanks.

Bob said:
Function ReplaceValue(ByVal AccStr As String) As Double

'This function will replace the column with the amount found in the another
excel worksheetdata

Dim Amt As Variant

ReplaceValue = 0

Dim Table As Range
Set Table = ThisWorkbook.Worksheets("Sheet3").Range("A1:B15000")

Amt = Application.VLookup(AccStr, Table, 2, False)

If IsError(Amt) Then
ReplaceValue = 0
Else
ReplaceValue = Amt
End If

End Function



--
HTH

Bob Phillips

(remove nothere from email address if mailing direct)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top