Индекс поиска с кнопками «Назад» и «Вперед» для отображения общего числа пользователей в таблице и одного с фактической ячейкой - PullRequest
0 голосов
/ 11 марта 2020

У меня есть кнопка поиска, которая открывает лист в другой книге, в которой есть столбец с именами пользователей. Поскольку имя пользователя будет повторяться, но другие значения не будут, я хочу отобразить два текстовых поля. Один для общего числа строк в листе с этим фактическим именем пользователя. И тот, который отображает текущую строку, которая отображается. Например, у меня есть 10 имен пользователей: Santia go. Поэтому я хочу два поля: первое отображает текущую ячейку (должно быть первое искомое значение), а другое - общее количество строк с этим именем пользователя.

Используя кнопки «назад» и «вперед», текущая ячейка должна покажите -1 или +1, чтобы отобразить, сколько записей осталось до тех пор, пока пользователь не перейдет от всех них.

В настоящее время у меня есть весь код, без текущих и общих значений. Я пробовал Rows.Count и Cells("B:B"), но когда я нажимаю, чтобы искать значения, он переходит непосредственно к обработчику ошибок.

Private Sub btnBuscar4_Click()
    'declarar las variables
    Dim FindRow
    Dim cRow As String
    Dim Datos As Worksheet: Set Datos = Workbooks.Open("C:\Users\rescariz\Desktop\Plataforma\Datos.xlsx").Worksheets("Datos")
    Dim A As Integer, Count As Integer

    Windows("Datos.xlsx").Visible = False 'Hace que no se muestre el excel externo (Datos)

    'hold in memory and stop screen flicker
    Application.ScreenUpdating = False

    'error block
    On Error GoTo errHandler:

        'Filtrar solo por Apellido
        If Me.BApe3 <> "" Then

        'Encontrar la fila con la data
        cRow = Me.BApe3.Value
        Set FindRow = Datos.Range("B:B").Find(What:=cRow, LookIn:=xlValues)
        Me.CurrentAddress = FindRow.Address 'te trae la celda actual

        For A = 1 To Rows("B2:B500")
        If FindRow = cRow Then
        Count = Count + 1
        End If
        Next A

        Reg2.Value = Count

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

    Else
        MsgBox "Por favor, ingresar un Legajo o un Apellido"
    End If

    'error block
    On Error GoTo 0
    Exit Sub
errHandler:
    MsgBox "Error! Verificar los datos ingresados, porque no son correctos!" & vbCrLf & Err.Description

End Sub
'Previous Value
Private Sub bsReg1_Click()
Dim Datos As Worksheet
Dim bRow As String
Dim FindRow As Range

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

If Me.BLeg3.Value <> "" Or Me.BLeg3.Value <> "" And Me.BApe3.Value <> "" Then
MsgBox "No se puede realizar la busqueda con Legajo"

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)

End If
Exit Sub
End Sub
'Next Value
Private Sub bsReg2_Click()
Dim Datos As Worksheet
Dim bRow As String
Dim FindRow As Range

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

If Me.BLeg3.Value <> "" Or Me.BLeg3.Value <> "" And Me.BApe3.Value <> "" Then
MsgBox "No se puede realizar la busqueda con Legajo"

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)
End If
Exit Sub
End Sub
...