Код не работает должным образом при применении фильтра - PullRequest
0 голосов
/ 23 мая 2019

Я создал usrform в VBA, который позволяет пользователю вводить данные, извлекать их и изменять или удалять их без необходимости просматривать рабочий лист. Большая часть работает нормально, но есть одна проблема. При извлечении данных имеется кнопка «Далее» и «Назад», позволяющая просматривать данные, которые соответствуют либо номеру буровой установки двигателя, либо серийному номеру двигателя. Код в обоих случаях работает нормально, когда не установлен фильтр даты для сужения записей, он циклически проходит, и когда он достигает последней записи в любом направлении, он переходит к первой записи. Когда фильтр даты активирован, тогда работает предыдущая кнопка, и вы можете перемещаться по данным, а когда они достигают конца, они возвращаются к началу, но следующая кнопка этого не делает. Когда вы достигаете последней записи, она не зацикливается, а просто переходит в ошибку.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...