Поиск данных из рабочей книги, редактирование и повторная отправка - VBA Userform - PullRequest
0 голосов
/ 12 февраля 2020

Первый раздел - поиск рабочей книги на рабочем столе, затем поиск данных и отображение их в некоторых текстовых полях и комбинированном ящике, который работает отлично! Проблема в том, что когда я хочу отредактировать эти данные, я хочу отправить эти данные обратно в ту же строку, где они были. У меня ошибка в том, что он говорит: «отсутствует объект». Я сейчас работаю над исправлением этого, поэтому, если я найду ответ, я опубликую его.

Private Sub btnBuscar4_Click()
    'declarar las variables
    Dim FindRow
    Dim i As Integer
    Dim cRow As String
    Dim Datos As Worksheet

    Set Datos = Workbooks.Open("C:\Users\rescariz\Desktop\Plataforma\Datos.xlsx").Worksheets("Datos")

    'hold in memory and stop screen flicker
    Application.ScreenUpdating = False

    'error block
    On Error GoTo errHandler:

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

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

        'agregar los valores a las casillas correspondientes
        Leg3.Value = FindRow
        Fech3.Value = FindRow.Offset(0, 4)
        Ape3.Value = FindRow.Offset(0, 1)
        Nomb3.Value = FindRow.Offset(0, 2)
        Pues3.Value = FindRow.Offset(0, 3)
        ComboLiqui3.Value = FindRow.Offset(0, 5)
        FechaDesde3.Value = FindRow.Offset(0, 6)
        FechaHasta3.Value = FindRow.Offset(0, 7)
        Cant3.Value = FindRow.Offset(0, 8)
        Obs3.Value = FindRow.Offset(0, 9)

        'Filtrar solo por Apellido
    ElseIf Me.BApe3 <> "" Then

        'Encontrar la fila con la data
        cRow = Me.BApe3.Value
        Set FindRow = Datos.Range("B:B").Find(What:=cRow, LookIn:=xlValues)

        '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)
        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

Private Sub btnComple3_Click()

    'declare the variables
    Dim findvalue As Range
    Dim cNum As Integer
    Dim Datos As Worksheet

    Set Datos = Workbooks.Open("C:\Users\rescariz\Desktop\Plataforma\Datos.xlsx").Worksheets("Datos")

    'error handling
    On Error GoTo errHandler:

    'hold in memory and stop screen flicker
    Application.ScreenUpdating = False

    Set Datos = Hoja1
    'check for values
    'If BLeg3.Value = "" Or BApe3.Value = "" Then
    'MsgBox "No hay datos para modificar"
    'Exit Sub
    'End If

    'Buscar por Legajo la fila para editar
    If BApe3.Value = "" Then
    Set findvalue = Datos.Range("A:A").Find(What:=BLeg3.Value, LookIn:=xlValues, LookAt:=xlWhole)

    'update the values
    findvalue.Offset(0, 4) = Fech3.Value
    findvalue.Offset(0, 0) = Leg3.Value
    findvalue.Offset(0, 1) = Ape3.Value
    findvalue.Offset(0, 2) = Nomb3.Value
    findvalue.Offset(0, 3) = Pues3.Value
    findvalue.Offset(0, 5) = ComboLiqui3.Value
    findvalue.Offset(0, 6) = FechaDesde3.Value
    findvalue.Offset(0, 7) = FechaHasta3.Value
    findvalue.Offset(0, 8) = Cant3.Value
    findvalue.Offset(0, 9) = Obs3.Value

    MsgBox "Se han modificado correctamente los datos"

ElseIf BLeg3.Value = "" Then
Set findvalue = Datos.Range("B:B").Find(What:=BApe3.Value, LookIn:=xlValues, LookAt:=xlWhole)

    'update the values
    findvalue.Offset(0, 3) = Fech3.Value
    findvalue.Offset(0, -1) = Leg3.Value
    findvalue.Offset(0, 0) = Ape3.Value
    findvalue.Offset(0, 1) = Nomb3.Value
    findvalue.Offset(0, 2) = Pues3.Value
    findvalue.Offset(0, 4) = ComboLiqui3.Value
    findvalue.Offset(0, 5) = FechaDesde3.Value
    findvalue.Offset(0, 6) = FechaHasta3.Value
    findvalue.Offset(0, 7) = Cant3.Value
    findvalue.Offset(0, 8) = Obs3.Value

    MsgBox "Se han modificado correctamente los datos"

End If

'error block
On Error GoTo 0
Exit Sub

errHandler:
'show error information in a messagebox
MsgBox "An Error has Occurred " & vbCrLf & _
       "The error number is: " & Err.Number & vbCrLf & _
       Err.Description & vbCrLf & "Please notify the administrator"

End Sub
...