Userform Find Previous Value возвращает пустые значения - PullRequest
0 голосов
/ 12 марта 2020

У меня есть кнопка, которая ищет столбцы для данных. Если я нажимаю следующую кнопку, следующая строка с этим фильтром будет заполнять текстовые поля и так далее ... Но когда я нажимаю предыдущую кнопку, она просто возвращает пустые ячейки. Это происходит только тогда, когда поиск осуществляется по идентификатору пользователя, а не по фамилии пользователя. Вот код:

Я пробовал с Long, который работает на следующей кнопке, но выдает ошибку на предыдущей кнопке ... Я пробовал string и, как я уже сказал, он приносит пустые значения .. .

Private Sub bsReg1_Click()
Dim Datos As Worksheet
Dim bRow As String
Dim lRow As Long
Dim FindRow As Range

Set Datos = Workbooks.Open("C:\Users\rescariz\Desktop\Plataforma\Datos.xlsm").Worksheets("Datos")

If Me.BLeg3.Value <> "" And Me.BApe3.Value = "" Then
lRow = Me.BApe3.Value
Set FindRow = Datos.Range("A:A").Find(What:=lRow, After:=Range(Me.CurrentAddress), SearchDirection:=xlPrevious, LookIn:=xlValues)
Me.CurrentAddress = FindRow.Address 'te trae la celda actual

'agregar los valores a las casillas correspondientes
        Me.Leg3.Value = FindRow.Offset(0, 0)
        Me.Fech3.Value = FindRow.Offset(0, 4)
        Me.Ape3.Value = FindRow.Offset(0, 1)
        Me.Nomb3.Value = FindRow.Offset(0, 2)
        Me.Pues3.Value = FindRow.Offset(0, 3)
        Me.ComboLiqui3 = FindRow.Offset(0, 5)
        Me.FechaDesde3 = FindRow.Offset(0, 6)
        Me.FechaHasta3 = FindRow.Offset(0, 7)
        Me.Dia3.Value = FindRow.Offset(0, 12)
        Me.Dia4.Value = FindRow.Offset(0, 13)
        Me.Cant3 = FindRow.Offset(0, 8)
        Me.Obs3 = FindRow.Offset(0, 9)

Else
bRow = Me.BApe3.Value

Set FindRow = Datos.Range("B:B").Find(What:=bRow, After:=Range(Me.CurrentAddress), SearchDirection:=xlPrevious, LookIn:=xlValues)
Me.CurrentAddress = FindRow.Address 'te trae la celda actual

'agregar los valores a las casillas correspondientes
        Me.Leg3.Value = FindRow.Offset(0, -1)
        Me.Fech3.Value = FindRow.Offset(0, 3)
        Me.Ape3.Value = FindRow.Offset(0, 0)
        Me.Nomb3.Value = FindRow.Offset(0, 1)
        Me.Pues3.Value = FindRow.Offset(0, 2)
        Me.ComboLiqui3 = FindRow.Offset(0, 4)
        Me.FechaDesde3 = FindRow.Offset(0, 5)
        Me.FechaHasta3 = FindRow.Offset(0, 6)
        Me.Cant3 = FindRow.Offset(0, 7)
        Me.Obs3 = FindRow.Offset(0, 8)
        Dia3.Value = FindRow.Offset(0, 11)
        Dia4.Value = FindRow.Offset(0, 12)

End If
Exit Sub
End Sub
Private Sub bsReg2_Click()
Dim Datos As Worksheet
Dim bRow As String
Dim FindRow As Range
Dim lRow As Long
Set Datos = Workbooks.Open("C:\Users\rescariz\Desktop\Plataforma\Datos.xlsm").Worksheets("Datos")

If Me.BLeg3.Value <> "" And Me.BApe3.Value = "" Then

lRow = Me.BLeg3.Value

Set FindRow = Datos.Range("A:A").Find(What:=lRow, After:=Range(Me.CurrentAddress), SearchDirection:=xlNext, LookIn:=xlValues)
Me.CurrentAddress = FindRow.Address 'te trae la celda actual

'agregar los valores a las casillas correspondientes
        Me.Leg3.Value = FindRow.Offset(0, 0)
        Me.Fech3.Value = FindRow.Offset(0, 4)
        Me.Ape3.Value = FindRow.Offset(0, 1)
        Me.Nomb3.Value = FindRow.Offset(0, 2)
        Me.Pues3.Value = FindRow.Offset(0, 3)
        Me.ComboLiqui3 = FindRow.Offset(0, 5)
        Me.FechaDesde3 = FindRow.Offset(0, 6)
        Me.FechaHasta3 = FindRow.Offset(0, 7)
        Me.Dia3.Value = FindRow.Offset(0, 12)
        Me.Dia4.Value = FindRow.Offset(0, 13)
        Me.Cant3 = FindRow.Offset(0, 8)
        Me.Obs3 = FindRow.Offset(0, 9)

Else
bRow = Me.BApe3.Value

Set FindRow = Datos.Range("B:B").Find(What:=bRow, After:=Range(Me.CurrentAddress), SearchDirection:=xlNext, LookIn:=xlValues)
Me.CurrentAddress = FindRow.Address 'te trae la celda actual

'agregar los valores a las casillas correspondientes
        Me.Leg3.Value = FindRow.Offset(0, -1)
        Me.Fech3.Value = FindRow.Offset(0, 3)
        Me.Ape3.Value = FindRow.Offset(0, 0)
        Me.Nomb3.Value = FindRow.Offset(0, 1)
        Me.Pues3.Value = FindRow.Offset(0, 2)
        Me.ComboLiqui3 = FindRow.Offset(0, 4)
        Me.FechaDesde3 = FindRow.Offset(0, 5)
        Me.FechaHasta3 = FindRow.Offset(0, 6)
        Me.Cant3 = FindRow.Offset(0, 7)
        Me.Obs3 = FindRow.Offset(0, 8)
        Dia3.Value = FindRow.Offset(0, 11)
        Dia4.Value = FindRow.Offset(0, 12)
End If
Exit Sub
End Sub

1 Ответ

0 голосов
/ 13 марта 2020

Я обнаружил ошибку: я не изменил установленную стрелку на предыдущей кнопке, и он искал значение текстового поля имени пользователя. Я изменяю это и с установкой переменной как: Dim lRow As Long работает как шарм!

Private Sub bsReg1_Click()
Dim Datos As Worksheet
Dim bRow As String
Dim lRow As Long
Dim FindRow As Range

Set Datos = Workbooks.Open("C:\Users\Bonito\Desktop\Plataforma\Datos.xlsm").Worksheets("Datos")

If Me.BLeg3.Value <> "" And Me.BApe3.Value = "" Then
lRow = Me.BLeg3.Value
Set FindRow = Datos.Range("A:A").Find(What:=lRow, After:=Range(Me.CurrentAddress), SearchDirection:=xlPrevious, LookIn:=xlValues)
Me.CurrentAddress = FindRow.Address 'te trae la celda actual

'agregar los valores a las casillas correspondientes
        Me.Leg3.Value = FindRow.Offset(0, 0)
        Me.Fech3.Value = FindRow.Offset(0, 4)
        Me.Ape3.Value = FindRow.Offset(0, 1)
        Me.Nomb3.Value = FindRow.Offset(0, 2)
        Me.Pues3.Value = FindRow.Offset(0, 3)
        Me.ComboLiqui3 = FindRow.Offset(0, 5)
        Me.FechaDesde3 = FindRow.Offset(0, 6)
        Me.FechaHasta3 = FindRow.Offset(0, 7)
        Me.Dia3.Value = FindRow.Offset(0, 12)
        Me.Dia4.Value = FindRow.Offset(0, 13)
        Me.Cant3 = FindRow.Offset(0, 8)
        Me.Obs3 = FindRow.Offset(0, 9)

Else
bRow = Me.BApe3.Value

Set FindRow = Datos.Range("B:B").Find(What:=bRow, After:=Range(Me.CurrentAddress), SearchDirection:=xlPrevious, LookIn:=xlValues)
Me.CurrentAddress = FindRow.Address 'te trae la celda actual

'agregar los valores a las casillas correspondientes
        Me.Leg3.Value = FindRow.Offset(0, -1)
        Me.Fech3.Value = FindRow.Offset(0, 3)
        Me.Ape3.Value = FindRow.Offset(0, 0)
        Me.Nomb3.Value = FindRow.Offset(0, 1)
        Me.Pues3.Value = FindRow.Offset(0, 2)
        Me.ComboLiqui3 = FindRow.Offset(0, 4)
        Me.FechaDesde3 = FindRow.Offset(0, 5)
        Me.FechaHasta3 = FindRow.Offset(0, 6)
        Me.Cant3 = FindRow.Offset(0, 7)
        Me.Obs3 = FindRow.Offset(0, 8)
        Dia3.Value = FindRow.Offset(0, 11)
        Dia4.Value = FindRow.Offset(0, 12)

End If
Exit Sub
End Sub
...