我在VBA中创建了一个usrform,它允许用户输入数据,检索数据以及修改或删除它,而无需查看工作表。大多数都工作正常,但是有一个问题。检索数据时有一个下一个和上一个按钮,使您可以浏览与发动机装备编号或发动机序列号匹配的数据。当没有设置日期筛选器来缩小条目的范围时,两者上的代码都可以正常工作,它循环遍历,并且在任一方向到达最后一个条目时,它将循环到第一个条目。当日期过滤器被激活时,上一个按钮将起作用,您可以在数据中移动,当数据到达末尾时,它将循环回到开始处,但下一个按钮则不会。当您到达最后一个条目时,它不会循环,只会出错。
Private Sub nextbutton_Click()
Dim Rerow As Range
If Not rigretrieve = "" Then
Set Rerow = Worksheets("DW10 Data").Columns("H").Find(Codetext, searchdirection:=xlPrevious).Offset(, -6).SpecialCells(xlCellTypeVisible)
10:
Set Rerow = Rerow.Offset(1, 0)
If Rerow = Rigtext Then
Rigtext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 2).Value
serialtext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 4).Value
hourstext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 5).Value
datetext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 3).Value
parttext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 6).Value
commentstext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 7).Value
Codetext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 8).Value
ElseIf Rerow = "" Then
Set Rerow = Worksheets("DW10 Data").Range("B:B").Find(rigretrieve, searchdirection:=xlNext)
If Rerow = Rigtext Then
Rigtext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 2).Value
serialtext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 4).Value
hourstext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 5).Value
datetext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 3).Value
parttext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 6).Value
commentstext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 7).Value
Codetext.Text = Worksheets("DW10 Data").Cells(Rerow.Row, 8).Value
Else: GoTo 10
End If
Else: GoTo 10
End If
这只是搜索发动机装备序列号的部分,另一半相同,只是在寻找发动机序列号。发生的事情是,如果您在最后一个条目上,那么您将获得Rerow = Nothing。就像我说的,如果没有日期过滤器,它会很好地工作,只有在过滤器工作时才引起问题。上一个按钮大致相同,但在另一个方向上偏移。目前,我们正在通过关闭启用过滤器的下一个按钮来解决此问题,但我想使其正常工作。