我有一个在列中搜索数据的按钮。如果我按下next按钮,下面的带有该过滤器的行将填充文本框,依此类推……但当我按下“上一步”按钮时,它只显示空白单元格。仅当按用户ID而不是按用户姓氏进行搜索时,才会发生这种情况。代码如下:
我尝试了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 SubPrivate 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发布于 2020-03-13 07:02:27
我发现了错误:我没有改变“上一步”按钮上的set lrow,它正在查找username textbox值。我改变了这一点,并将变量设置为: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 Subhttps://stackoverflow.com/questions/60661399
复制相似问题