excel - 当文本存在时,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
,这应该有效......我错过了什么?
解决方案
推荐阅读
- kubernetes - 如何使用 init 容器检查 MySQL 是否准备好连接?
- python - Discord.py 使用他们的 ID 向用户发送 DM
- flutter - Using same riverpod state provider for multiple pages
- spring - 在没有 @DirtiesContext 的情况下如何在 Quarkus 中实现集成测试?
- javascript - 通过 Docker 问题快速安装
- java - 在java中如何让用户在参差不齐的数组中输入列数,但对于每一行,列数应该不同
- python - 查找本地电话号码的正则表达式不起作用
- node.js - message.guild 在 discordjs 中返回 null
- java - docker中的Spring JWT,返回401,本地工作
- visual-studio - 如何禁用 Microsoft.CodeAnalysis.Remote.RemoteEndPoint.InvokeAsync?