所以我一直试图弄清楚为什么这不起作用而且我真的很沮丧。
当我点击“搜索”按钮时,它会从文本框中获取文本,并将其用作搜索条件。我希望它跳过当前活动的任何行,这样只要我继续按下我的“搜索”按钮它就会继续前进,而不是继续找到同一行。我让它工作了很长时间,然后我升级到Windows 10,然后停止工作。这只是我无法弄清楚的一件事。我对原版进行了一些更改,因此这与以前的代码不同。无论我做什么,它都会向我显示相同的行,即使它在右下方有相同的数据。如下图所示,如果我搜索TRACE,则会选择第三行数据,但是当我再次点击“搜索”时,它不会像它应该那样移动到下一行。我正在使用Range.Find(What:=,After:=)并将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
答案 0 :(得分:0)
好的,一发布这个,我就知道我做错了什么。虽然我不知道为什么它在过去有效,然后停止了。也许我没有意识到改变了一些东西并搞砸了无论如何,我在D列中搜索一个值。一旦找到具有搜索标准的细胞,就选择并在该行中激活B至F列中的细胞。但是当我再次点击搜索时,它会在该行的B列之后开始。我认为它会跳到下一行,但它正在移动到下一列开始搜索。所以它再次遇到了相同的值,并重复了循环。
我刚刚将After条件更改为
After:=Range("B" & ACr + 1)
然后就像我想要的那样开始搜索下一行。 我把它留下来以防万一其他人遇到这个错误。希望我能帮助其他人意识到他们并不是唯一犯愚蠢错误的人......