excel - Excel Range.Find 没有按照我想象的方式工作
问题描述
所以我一直试图弄清楚为什么这不起作用,我真的很沮丧。
当我单击“搜索”按钮时,它会从文本框中获取文本,并将其用作搜索条件。我希望它跳过当前处于活动状态的任何行,这样只要我继续按下“搜索”按钮,它就会继续前进,而不是继续寻找同一行。我让它工作了很长时间,然后我升级到 Windows 10 并且东西停止工作了。这只是我似乎无法弄清楚的一件事。我对我的原始代码进行了一些更改,因此这与以前的代码不同。无论我做什么,它都会向我显示同一行,即使它下面的那一行具有相同的数据。如下图所示,如果我搜索 TRACE,则选择了第三行数据,但是当我再次点击“搜索”时,它并没有像应有的那样移动到下一行。我正在使用 Range.Find(What:= ,之后:=) 并将 After 范围设置为当前激活范围的最左侧单元格。哪个应该在下一行开始搜索。但这并没有发生。
Private Sub Search_Next_Click()
Dim Fnd As Range
Dim S_Range as Range
Dim CurrRow As Integer: CurrRow = ActiveCell.Row
Dim CurrColumn As Integer: CurrColumn = ActiveCell.Column
'Last row of data
LastRow = Range("B24").End(xlDown).Row
AC = ActiveCell.Address
''If the Find button is pressed and the current active cell is outside the range of my data
''this makes sure that the active cell moves to the upper left of that range
If AC = "" Or CurrRow < 24 Or CurrColumn > 10 Then
AC = "B24"
Range(AC).Activate
End If
ACr = ActiveCell.Row
On Error Resume Next
Set S_range = Range("B24" & ":J" & LastRow)
Set Fnd = S_range.Find(what:=SearchBox.Text, after:=Range(AC))
FR = Fnd.Row
If FR = "" Then
MsgBox ("No Match Found")
DoCmd.CancelEvent
SearchBox.SetFocus
Exit Sub
End If
On Error GoTo 0
Scell = "B" & FR & ":J" & FR
ActiveSheet.Range(Scell).Select
ActiveSheet.Range(Scell).Activate
End Sub
解决方案
好的,一旦我发布了这个,我就知道我做错了什么。虽然我不知道为什么它在过去起作用,然后停止了。也许我在不知不觉中改变了一些东西,把自己搞砸了。无论如何,我在 D 列中搜索一个值。一旦找到具有搜索条件的单元格,就会在该行中选择并激活 B 到 F 列中的单元格。但是当我再次点击搜索时,它开始于该行的 B 列之后。我以为它会跳到下一行,但它正在移动到下一列开始搜索。所以它再次遇到相同的值,并重复循环。
我刚刚将 After 标准更改为
After:=Range("B" & ACr + 1)
然后它像我想要的那样开始搜索下一行。我留下这个,以防其他人遇到这个错误。希望我可以帮助其他人意识到他们不是唯一犯愚蠢错误的人......
推荐阅读
- c++ - SFINAE 没有正确判断方法是否存在
- python - 如何在 Python 的数据框中创建两列的交叉表并在输出中生成总行和列?
- c# - Pop Async 删除内容页面资源标题
- python - 裁剪和保存 Tensorflow 对象检测 API 中的检测
- android - 如何在android studio中仅删除xlarge的布局?
- azure - Azure AD - 企业应用程序中缺少“Office 365 管理 API”
- certificate - https on amason EC2 与 OVH CDN
- flutter - 同意消息未显示
- python - 在numpy中加倍列表
- python - 如何“剪辑”matplotlib 颜色条?