gpt4 book ai didi

vba - 查找不返回感兴趣的范围

转载 作者:行者123 更新时间:2023-12-04 21:34:44 24 4
gpt4 key购买 nike

在 Excel 2010 中,我试图让这个小脚本工作。

 If searchVal = findVal Then
Set rngX = Worksheets("NEW Format").Range("C:C").Find(What:=resultVal, LookIn:=xlValues)
ID = rngX.Offset(0, -1).Value
End If

我知道'searchVal' 是正确的,我知道'findVal' 是正确的,我知道'resultVal' 是正确的。此外,rngX 被定义为一个范围。但是,每次运行时,rngX 始终是 Nothing。 ID 应设置为找到“resultVal”的行,左侧一个单元格。

我尝试了一种不同的方式,结果完全一样。
 On Error Resume Next
If searchVal = findVal Then
Set rngFindValue = ActiveSheet.Range("C1:C100").Find(What:=resultVal, After:=ActiveSheet.Range("C1"), LookIn:=xlFormulas)
ID = rngFindValue.Address
ID = rngFindValue.Offset(0,-1)
End If

我查看了下面的链接,这些示例都不适合我。

http://www.globaliconnect.com/excel/index.php?option=com_content&view=article&id=112:find-method-in-excel-vba-find-multiple-occurrences-find-method-to-vlookup-find-date&catid=79&Itemid=475

我必须在这里遗漏一些非常简单的东西,但我不知道它是什么!

编辑我的 OP:我也试过这个。
 If searchVal = findVal Then
Range("C2:C" & LRow).Select
For Each cell In Selection
If cell = resultVal Then
ID = cell.Offset(0, -1).Value
End If
Next
End If

在即时窗口中,我可以看到 cell = resultVal。我仍然不明白为什么这不起作用。

我刚刚发现了一些有趣的东西。当我在 Watch Window 中检查这两个变量时,它们似乎有所不同。

enter image description here

看起来第二个变量后面有一个尾随空格,即使我在它周围放了一个 TRIM() 。当我在即时窗口中查看这两个变量时,两者似乎完全相同。也许问题是由于数据类型......不确定......

最佳答案

当您使用查找功能(在 VBA 或 Excel GUI 中)时,应用程序会保存您上次使用的搜索首选项。因此,当您使用 .Find() 时在 VBA 中,明确设置这些搜索参数总是一个好主意。

我们知道您的 .Find()不工作,因为 rngXNothing - 通常的错误是不设置 LookAt:=定义您是在搜索范围内寻找完全匹配还是部分匹配的参数。

最后,摆脱On Error Resume Next - 你永远不应该将它用于“修复”问题,只用于处理你已经捕获和处理的错误。

关于vba - 查找不返回感兴趣的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41878181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com