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