Editar macro Excel para editar producto

Vengo con problema a la hora de Editar cualquier línea de una o otra página.
El button (como sabes) es el mismo para Insertar o Editar

Repara en la imagen que edite, línea 46 de la página 1 y al pisar el button Insertar me la mandó para después de la ultima línea de la página 2.

Quisiera poder editar cualquier dato, sea de la 1ª página o de la 2ª según el rango

Lo siguiente para una nueva pregunta: es que sucede casi lo mismo que lo anterior, activando el CheckBox "Marca Para insertar datos finales" y luego también el CheckBox "Editar" para editar los datos correspondientes a las celdas

        If Range("C46") = "" Then
            Cells(u, "B") = TextBox1    'Item #
            Cells(u, "C") = TextBox2    'Producto #
            Cells(u, "D") = TextBox3    'Descripcion del Producto
            Cells(u, "J") = TextBox4    'Cant.
            Cells(u, "K") = TextBox5    'Pagina #
        If CheckBox2 Then
            'modifica producto
            u = ComboBox1.ListIndex + 11
        Else
            'inserta producto
            u = Range("B" & Rows.Count).End(xlUp).Row + 1
        End If
        If Range("C46") = "" Then
            Cells(u, "B") = TextBox1    'Item #
            Cells(u, "C") = TextBox2    'Producto #
            Cells(u, "D") = TextBox3    'Descripcion del Producto
            Cells(u, "J") = TextBox4  'Cant.
            If CheckBox3 Then
                Cells(u, "J").Font.ColorIndex = 3
                Cells(u, "J").Font.Bold = True
            Else
                Cells(u, "J").Font.ColorIndex = vbBlack
                Cells(u, "J").Font.Bold = False
            End If
            Cells(u, "K") = TextBox5    'Pagina #
        'Productos a 2ª pagina
        Else 'Si encuentra la C46 ocupada pasa a la 2ª Pagina
            u = Range("m" & Rows.Count).End(xlUp).Row + 1
            Cells(u, "M") = TextBox1    'Item #
            Cells(u, "N") = TextBox2    'Producto #
            Cells(u, "O") = TextBox3    'Descripcion del Producto
            Cells(u, "U") = TextBox4  'Cant.
            If CheckBox3 Then
                Cells(u, "U").Font.ColorIndex = 3
                Cells(u, "U").Font.Bold = True
            Else
                Cells(u, "U").Font.ColorIndex = vbBlack
                Cells(u, "U").Font.Bold = False
            End If
            Cells(u, "V") = TextBox5    'Pagina #
        End If

Siempre me manda la edicion para la pagina 2 y esto porque encuentra la C46 ocupada.

También quiero poder editar esto sea de la 1ª o 2ª página según el rango del cual seleccione, Sea por medio de algún CheckBox o no. Aquí el código del button, sea para insertar o editar.

El codigo del buton, lo dejare despues de que responda porque no me deja preguntar por el texto mui largo


        

1 Respuesta

Respuesta
1

Envíame el archivo y en otra hoja me pones las explicaciones con ejemplos, procura detallar el caso.

Sal u dos

H o l a:

Te anexo las macros actualizadas

Private Sub CheckBox2_Click()
'Act.Por.Dante Amor
    Dim i
    '
    'Si está activo el check de datos de identificación, entonces es para modificar los datos de identificación
    If CheckBox1 And CheckBox2 Then
        TextBox6 = Range("C8")   'Fecha
        TextBox7 = Range("E8")   'Nombre Empresa
        TextBox8 = Range("J8")   'Repuestos para
        TextBox9 = Range("D9")   'Serial Maq/Mot.
        TextBox10 = Range("G9")  'Marca
        TextBox11 = Range("K9")  'Modelo/Ident.
        TextBox12 = Range("D47") 'Notas
        Exit Sub
    Else '
     'If CheckBox1 And CheckBox2 and CheckBox4 Then
     '       TextBox6 = Range("n8")   'Fecha
     '       TextBox7 = Range("p8")   'Nombre Empresa
     '       TextBox8 = Range("u8")   'Repuestos para
     '       TextBox9 = Range("o9")   'Serial Maq/Mot.
     '       TextBox10 = Range("r9")  'Marca
     '       TextBox11 = Range("v9")  'Modelo/Ident.
     '       TextBox12 = Range("o47") 'Notas
     '   Exit Sub
    'End If
    End If
    '
    If CheckBox2 Then
        Call CargaCombobox2
    Else
        ComboBox1.Enabled = False
        Call Limpiar
        ComboBox1 = ""
    End If
End Sub
'
Sub CargaCombobox2()
    With ComboBox1
        .Enabled = True
        'carga nuevamente el combo con los nuevos registros
        .Clear
        For i = 11 To 46 'Range("B" & Rows.Count).End(xlUp).Row 'original ("B"
            If Cells(i, "B") <> "" Then
                .AddItem Cells(i, "C") '1ª columna C ComboBox
                .List(ComboBox1.ListCount - 1, 1) = Cells(i, "D") '2ª columna D ComboBox
                .List(ComboBox1.ListCount - 1, 2) = i
                .List(ComboBox1.ListCount - 1, 3) = Columns("B").Column
            End If
        Next
        For i = 11 To 46
            If Cells(i, "N") <> "" Then
                .AddItem Cells(i, "N")
                .List(ComboBox1.ListCount - 1, 1) = Cells(i, "O")
                .List(ComboBox1.ListCount - 1, 2) = i
                .List(ComboBox1.ListCount - 1, 3) = Columns("M").Column
            End If
        Next
    End With
End Sub

Evento del combobox1

Private Sub ComboBox1_Change()
'Por.Dante Amor
    'Llenar textbox
    Dim f
    If ComboBox1.ListIndex = -1 Then
        TextBox1 = ""
        TextBox2 = ""
        TextBox3 = ""
        TextBox4 = ""
        TextBox5 = ""
        Exit Sub
    End If
    f = Val(ComboBox1.List(ComboBox1.ListIndex, 2))
    c = Val(ComboBox1.List(ComboBox1.ListIndex, 3))
    TextBox1 = Cells(f, c)
    TextBox2 = Cells(f, c + 1)
    TextBox3 = Cells(f, c + 2)
    TextBox4 = Cells(f, c + 8)
    TextBox5 = Cells(f, c + 9)
End Sub

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas