首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户窗体查找上一个值返回空值

用户窗体查找上一个值返回空值
EN

Stack Overflow用户
提问于 2020-03-13 04:24:21
回答 1查看 35关注 0票数 0

我有一个在列中搜索数据的按钮。如果我按下next按钮,下面的带有该过滤器的行将填充文本框,依此类推……但当我按下“上一步”按钮时,它只显示空白单元格。仅当按用户ID而不是按用户姓氏进行搜索时,才会发生这种情况。代码如下:

我尝试了Long,它在下一步按钮上工作,但在上一步按钮上出现错误...我尝试过string,正如我所说的,它带来了空白值...

代码语言:javascript
复制
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
代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-03-13 07:02:27

我发现了错误:我没有改变“上一步”按钮上的set lrow,它正在查找username textbox值。我改变了这一点,并将变量设置为:Dim lRow As Long非常有用!

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60661399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档