首页 > 解决方案 > 当文本存在时,VBA Range.Find 方法返回错误

问题描述

我正在尝试为区分大小写的 UDF 编程VLOOKUP。目标是模仿VLOOKUP参数,但仅在找到区分大小写的匹配时才返回。这是我到目前为止所拥有的

Function CaseVLOOKUP(lookup_value As Variant, table_array As Range, col_index_num As Integer, range_lookup As Boolean)

Dim search_col As Range
Dim return_col As Range
Dim result As Variant
Dim row_index As Double

Set return_col = Application.WorksheetFunction.Index(table_array, 0, col_index_num)
Set search_col = Application.WorksheetFunction.Index(table_array, 0, 1)

row_index = search_col.Find(lookup_value, MatchCase:=True, LookIn:=xlValue).Row
result = return_col(row_index)


'Debug.Print result
CaseVLOOKUP = result

End Function

但是,#VALUE即使我看到文本存在,我也会收到错误消息。错误在row_index设置行;

我知道文本应该存在于return_col第 23 项中。在即时窗口中,我尝试了

?lookup_value=search_col(23)

这会返回True。据我了解Range.Find,这应该有效......我错过了什么?

标签: excelvbauser-defined-functions

解决方案


推荐阅读