Macro casi finalizada, solo falta unos detalles.

Espero me pueda apoyar, tengo una macro que básicamente lo que hace es un form para dar Altas, Bajas, Consultas, eliminación de registros. Poco a poco la eh ido armando, hasta el momento todo funciona bien, mis problemáticas son 2:

1. Al Eliminar algún registro, que este registro se vaya automáticamente a otra hoja, y si vuelvo a eliminar otro se vaya debajo del eliminado anteriormente.

2. Al final de algunas columnas deseo que tenga un formato en especifico y que me agregue sumatorias y algunas formulas. (Aún no logro esto).

Me podría apoyar con su valiosisisimo tiempo y conocimientos.

Muchas gracias. Anexo link de descarga en la hoja2 viene como debe de quedar mi hoja1.

https://drive.google.com/open?id=0Bw9OQLh-EOb7VnRVU0dscVpPNlE

1 respuesta

Respuesta
1

No puedo descargar el archivo, envíame el archivo adjunto en un correo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Gerardo Mujica Arevalo” y el título de esta pregunta.

Señor Dante, recién le acabo de enviar el correo con el archivo adjunto.

Gracias por tomarme en cuenta.

Te anexo los eventos que modifiqué

Private Sub CommandButton5_Click()
'carga filro
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Temporal")
    '
    If Me.txtFiltro1.Value = "" Then Exit Sub
    If cmbEncabezado = "" Then Exit Sub
    '
    h2.Cells.Clear
    ListBox1.RowSource = ""
    h1.Rows(1).Copy h2.Rows(1)
    '
    j = cmbEncabezado.ListIndex + 1
    n = 2
    '
    For i = 2 To h1.Range("a1").CurrentRegion.Rows.Count
        If LCase(h1.Cells(i, j)) Like "*" & LCase(txtFiltro1) & "*" Then
            h1.Rows(i).Copy h2.Rows(n)
            n = n + 1
        End If
    Next i
    u = h2.Range("A" & Rows.Count).End(xlUp).Row
    If u = 1 Then
        MsgBox "No existen registros con ese filtro", vbExclamation, "FILTRO"
        Exit Sub
    End If
    ListBox1.RowSource = h2.Name & "!A2:AP" & u
End Sub

'Activar la celda del registro elegido
Private Sub ListBox1_Click()
'    Range("a1").Activate
'    cuenta = Me.ListBox1.ListCount
'    Set rango = Range("A1").CurrentRegion
'    For i = 0 To cuenta - 1
'        If Me.ListBox1.Selected(i) Then
'            valor = Me.ListBox1.List(i)
'            rango.Find(What:=valor, lookat:=xlWhole, After:=ActiveCell).Activate
'        End If
'    Next i
End Sub

No necesitas seleccionar la celda, ya que acarrea problemas al borrar una fila. Para saber la fila seleccionada, mejor utiliza el método find, tal y como lo utilizo para borrar un registro.

'Eliminar el registro
Private Sub CommandButton4_Click()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Borrados")
    '
    If ListBox1.ListIndex = -1 Then
        MsgBox "Selecciona un registro para eliminar"
        Exit Sub
    End If
    '
    Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "PROYECCIONES - Búsquedas")
    If Pregunta = vbNo Then Exit Sub
    '
    num_id = ListBox1.List(ListBox1.ListIndex, 0)
    If IsNumeric(num_id) Then num_id = Val(num_id)
    Set b = h1.Columns("A").Find(num_id, lookat:=xlWhole)
    If Not b Is Nothing Then
        u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
        h1.Rows(b.Row).Copy h2.Rows(u2)
        h1.Rows(b.Row).Delete
    End If
    Call CommandButton5_Click
End Sub

El registro se copia a la hoja "borrado" y se borra de la hoja1.


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas