VBA Excel数据表单(搜索按钮上的Else If语句)

VBA Excel数据表单(搜索按钮上的Else If语句),excel,vba,if-statement,Excel,Vba,If Statement,我有一个代码,当您输入和ID并按search时,它会正确显示数据。但是,如果你想通过ID查找姓氏,它不会带来任何东西。我认为我做错了else-if语句,但还不能找到错误 Private Sub cmdBuscar_Click() 'declarar las variables Dim FindRow Dim i As Integer Dim cRow As String 'error block On Error GoTo errHandler: 'Filtrar solo por Lega

我有一个代码,当您输入和ID并按search时,它会正确显示数据。但是,如果你想通过ID查找姓氏,它不会带来任何东西。我认为我做错了else-if语句,但还不能找到错误

Private Sub cmdBuscar_Click()
'declarar las variables
Dim FindRow
Dim i As Integer
Dim cRow As String

'error block
On Error GoTo errHandler:

'Filtrar solo por Legajo
If Me.TextBox6 = "" Then

    'Encontrar la fila con la data
    cRow = Me.TextBox5.Value
    Set FindRow = Hoja4.Range("A:A").Find(What:=cRow, LookIn:=xlValues)

    'agregar los valores a las casillas correspondientes
    Me.TextBox7.Value = FindRow
    Me.TextBox8.Value = FindRow.Offset(0, 1)
    Me.TextBox9.Value = FindRow.Offset(0, 2)
    Me.TextBox10.Value = FindRow.Offset(0, 3)
    Me.TextBox11.Value = FindRow.Offset(0, 4)

'Filtrar solo por Apellido
Else
    If Me.TextBox6 = "" Then
        'Encontrar la fila con la data
        cRow = Me.TextBox6.Value
        Set FindRow = Hoja4.Range("B:B").Find(What:=cRow, LookIn:=xlValues)

        'agregar los valores a las casillas correspondientes
        Me.TextBox7.Value = FindRow
        Me.TextBox8.Value = FindRow.Offset(0, 1)
        Me.TextBox9.Value = FindRow.Offset(0, 2)
        Me.TextBox10.Value = FindRow.Offset(0, 3)
        Me.TextBox11.Value = FindRow.Offset(0, 4)
    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 If

End Sub

我假设TextBox5是名字,TextBox6是姓氏

您只需要检查(如果)FirstName是否存在,如果存在,请搜索该名称。否则(ElseIF),检查姓氏,如果存在,则搜索该姓氏?等等。此外,我们可以添加最后一个案例(其他)FirstName和LastName均为空,您犯了错误,请输入其中一个

您只需要一个带有这三个条件的If语句(一个嵌套在另一个中)

试试这个:

Private Sub cmdBuscar_Click()
    'declarar las variables
    Dim FindRow
    Dim i As Integer
    Dim cRow As String

    'error block
    On Error GoTo errHandler:

    'Filtrar solo por Legajo
    If Me.TextBox5 <> "" Then

        'Encontrar la fila con la data
        cRow = Me.TextBox5.Value
        Set FindRow = Hoja4.Range("A:A").Find(What:=cRow, LookIn:=xlValues)

        'agregar los valores a las casillas correspondientes
        Me.TextBox7.Value = FindRow
        Me.TextBox8.Value = FindRow.Offset(0, 1)
        Me.TextBox9.Value = FindRow.Offset(0, 2)
        Me.TextBox10.Value = FindRow.Offset(0, 3)
        Me.TextBox11.Value = FindRow.Offset(0, 4)

    'Filtrar solo por Apellido
    ElseIf Me.TextBox6 <> "" Then
        'Encontrar la fila con la data
        cRow = Me.TextBox6.Value
        Set FindRow = Hoja4.Range("B:B").Find(What:=cRow, LookIn:=xlValues)

        'agregar los valores a las casillas correspondientes
        Me.TextBox7.Value = FindRow
        Me.TextBox8.Value = FindRow.Offset(0, 1)
        Me.TextBox9.Value = FindRow.Offset(0, 2)
        Me.TextBox10.Value = FindRow.Offset(0, 3)
        Me.TextBox11.Value = FindRow.Offset(0, 4)
    Else
        MsgBox "Please enter FirstName or LastName"        
    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
Private Sub cmdBuscar\u Click()
'声明器las变量
昏暗的芬德罗
作为整数的Dim i
乌鸦如弦
'错误块
错误转到错误处理程序时:
“Filtrar solo por Legajo
如果是Me.TextBox5“”,则
“数据中心”
cRow=Me.TextBox5.Value
设置FindRow=Hoja4.Range(“A:A”).Find(What:=cRow,LookIn:=xlValues)
“agregar los valores a las casillas correspondenes
Me.TextBox7.Value=FindRow
Me.TextBox8.Value=FindRow.Offset(0,1)
Me.TextBox9.Value=FindRow.Offset(0,2)
Me.TextBox10.Value=FindRow.Offset(0,3)
Me.TextBox11.Value=FindRow.Offset(0,4)
“Filtrar solo por Apellido
如果是我,文本框6“那么
“数据中心”
cRow=Me.TextBox6.Value
设置FindRow=Hoja4.Range(“B:B”).Find(What:=cRow,LookIn:=xlValues)
“agregar los valores a las casillas correspondenes
Me.TextBox7.Value=FindRow
Me.TextBox8.Value=FindRow.Offset(0,1)
Me.TextBox9.Value=FindRow.Offset(0,2)
Me.TextBox10.Value=FindRow.Offset(0,3)
Me.TextBox11.Value=FindRow.Offset(0,4)
其他的
MsgBox“请输入FirstName或LastName”
如果结束
'错误块
错误转到0
出口接头
错误处理程序:
MsgBox“错误!检查入口数据,无子纠正!”&vbCrLf和错误说明
端接头

对不起,我只想按姓氏查找,不能同时按姓氏和姓氏查找。(一个过滤器或另一个,不是两个)非常感谢。是的,是的!另一个你可能知道的问题。在应该显示ID的框中,显示姓氏,等等。。。我该如何解决这个问题?尝试添加另一组FindRow2,但无法解决问题。是从错误的专栏带来的。偏移量应该先是(0,-1),然后是(0,0),依此类推!很高兴听到!很乐意帮忙。只是一个小评论,让人们更容易帮助您解决堆栈溢出问题。下次你提问时,试着提供更多的背景信息,以便我们知道什么是TextBox5和TextBox6,以及你的数据中哪一列有ID、FirsName等。一般来说,请检查此项():)