VBA Excel DataForm (иначе, если выписка по кнопке поиска) - PullRequest
2 голосов
/ 04 февраля 2020

У меня есть этот код, который, когда вы вводите и ID и нажимаете поиск, он приносит данные правильно. Но если вы хотите поискать фамилию и по 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

1 Ответ

1 голос
/ 04 февраля 2020

Я полагаю, TextBox5 является firstName, а TextBox6 является LastName?

Вы просто хотите проверить, присутствует ли ( If ) FirstName, если это так, найдите его. В противном случае ( ElseIF ) проверьте LastName и, если таковой имеется, ищите вместо этого? и др c. Кроме того, мы можем добавить окончательный регистр ( Else ), когда 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...