Итак, я пытался выяснить, почему это не работает, и я очень расстроен.
Когда я нажимаю на кнопку «Поиск», она берет текст из текстового поля и использует его в качестве критерия поиска. Я хочу, чтобы он пропускал любую строку, активную в данный момент, так что, пока я продолжаю нажимать кнопку «Поиск», она будет двигаться дальше и не будет продолжать находить одну и ту же строку. И у меня это работало долгое время, затем я обновился до 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