应用过滤器后,代码无法正常运行

时间:2019-05-23 07:45:47

标签: excel vba

我在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。就像我说的,如果没有日期过滤器,它会很好地工作,只有在过滤器工作时才引起问题。上一个按钮大致相同,但在另一个方向上偏移。目前,我们正在通过关闭启用过滤器的下一个按钮来解决此问题,但我想使其正常工作。

0 个答案:

没有答案