Eliminar filas en excel con macro

Para Dante Amor

Buen día.

Solicito ayuda con este código, quiero eliminar las filas que no necesito pero solo me las deja en blanco.

Private Sub ELIMINAR_Click()
Dim I, aa, bb, cc, dd, ee As Single
Dim num_fila_loc As Single
bb = 2
    For I = 0 To CODLOCATIVAS.ListCount - 1
    If CODLOCATIVAS.Selected(I) = True Then
    num_fila_loc = I
    Exit For
    End If
    Next I
  'MsgBox (I)
'ELIMINAR LA LOCATIVA NO NECESARIA
    'CODIGO
        mtxlocat(num_fila_loc, 0) = Empty
    'DESCRIPCION
        mtxlocat(num_fila_loc, 1) = Empty
    'GRUPO
        mtxlocat(num_fila_loc, 2) = Empty
'ARREGLO DE NUEVA MATRIZ
CODLOCATIVAS.List() = mtxlocat
For ee = 2 To UBound(mtx_loc_fin)
    mtx_loc_fin(ee, 0) = Empty
    mtx_loc_fin(ee, 1) = Empty
    mtx_loc_fin(ee, 2) = Empty
Next ee
For aa = 2 To UBound(mtxlocat)
    If mtxlocat(aa, 0) <> Empty Then
            'CODIGO
                mtx_loc_fin(bb, 0) = mtxlocat(aa, 0)
            'DESCRIPCION
                mtx_loc_fin(bb, 1) = mtxlocat(aa, 1)
            'GRUPO
                mtx_loc_fin(bb, 2) = mtxlocat(aa, 2)
       bb = bb + 1
    End If
Next aa
CODLOCATIVAS.List() = mtx_loc_fin
For dd = 0 To UBound(mtxlocat)
    mtxlocat(dd, 0) = Empty
    mtxlocat(dd, 1) = Empty
    mtxlocat(dd, 2) = Empty
Next dd
ReDim mtxlocat(bb + 47, 3)
For cc = 0 To UBound(mtx_loc_fin)
    mtxlocat(cc, 0) = mtx_loc_fin(cc, 0)
    mtxlocat(cc, 1) = mtx_loc_fin(cc, 1)
    mtxlocat(cc, 2) = mtx_loc_fin(cc, 2)
Next cc
CODLOCATIVAS.List() = mtxlocat
End Sub

1 Respuesta

Respuesta
2

h o l a:

¿Quieres eliminar la fila del listbox o de la hoja?

Tengo que revisar cómo estás cargando los datos en el listbox, dependiendo de cómo estás cargando es el método que se debe usar para borrar.

'

En un correo nuevo envíame tu archivo y me explicas en qué userform estás trabajando y qué es lo que necestias.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “(xxxxxx)” y el título de esta pregunta.

Ya te envié el archivo al correo.

Gracias.

H o l a:

Te anexo las macros para cargar los datos en el listbox, de esa forma sabremos cuál fila estás seleccionando de la hoja; y el código para eliminar.

Private Sub Cmbxpostventas_Change()
'Por.Dante Amor
    Dim codigos As New Collection
    Set codigos = Nothing
    CODLOCATIVAS.RowSource = ""
    If cmbxpostventas = "" Then Exit Sub
    '
    Set ht = Sheets("Temp")
    ht.Cells.Clear
    Set h = Sheets("BD_LOCATIVAS")
    h.Range("B1:D1").Copy ht.[A1]
    '
    'Busca todos los códigos POSTVENTA que pertenecen al cmbxpostventas
    Set r = h.Columns("F")
    Set b = r.Find(cmbxpostventas, lookat:=xlWhole)
    If Not b Is Nothing Then
        celda = b.Address
        Do
            existe = False
            For k = 1 To codigos.Count
                Select Case StrComp(codigos(k), h.Cells(b.Row, "A"), vbTextCompare)
                    Case 0: existe = True
                End Select
            Next
            'titulos.Add dato 'lo agrega al final
            If existe = False Then
                codigos.Add h.Cells(b.Row, "A")
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> celda
    End If
    '
    'buscar todos los códigos LOCATIVA que pertenecen al código POSTVENTA
    j = 2
    Set r = h.Columns("A")
    For Each codpost In codigos
        Set b = r.Find(codpost, lookat:=xlWhole)
        If Not b Is Nothing Then
            celda = b.Address
            Do
                'detalle
                h.Range("B" & b.Row & ":D" & b.Row).Copy ht.Range("A" & j)
                ht.Range("D" & j) = b.Row 'pongo el número de fila
                j = j + 1
                Set b = r.FindNext(b)
            Loop While Not b Is Nothing And b.Address <> celda
        End If
    Next
    '
    'carga el listbox
    CODLOCATIVAS.RowSource = ht.Name & "!A2:D" & ht.Range("A" & Rows.Count).End(xlUp).Row
    Set codigos = Nothing
End Sub
'
Private Sub ELIMINAR_Click()
'Por.Dante Amor
    'Borra la fila en la hoja
    fila = CODLOCATIVAS.List(CODLOCATIVAS.ListIndex, 3)
    Set h = Sheets("BD_LOCATIVAS")
    h.Rows(fila).Delete
    '
    'Actualiza el listbox
    Set ht = Sheets("Temp")
    otrafila = CODLOCATIVAS.ListIndex + 2
    ht.Rows(otrafila).Delete
    CODLOCATIVAS.RowSource = ht.Name & "!A2:D" & ht.Range("A" & Rows.Count).End(xlUp).Row
End Sub
' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Te anexo la macro para insertar registros:

Private Sub INGRESAR_Click()
    Dim numradi As Single
    Dim X1 As Single
    Sheets("CUADRO LOCATIVAS").Select
    ActiveSheet.Unprotect ("80178848")
    numradi = (Application.WorksheetFunction.Max(Columns("D:D")))
    numradi = numradi + 1
    cuantos = CODLOCATIVAS.ListCount - 1
    For X1 = 2 To CODLOCATIVAS.ListCount - 1
        If CODLOCATIVAS.List(X1, 0) = "" Then Exit For
        Sheets("CUADRO LOCATIVAS").Select
        Rows("3:3").Select
        Selection.Copy
        Rows("4:4").Select
        Selection.Insert Shift:=xlDown
        Application.CutCopyMode = False
        Range("A3").Select
        Range("B3") = DateValue(FRECP)
        Range("C3") = DateValue(FECIN)
        Range("D3") = numradi
        Range("E3") = APTO.Text
        Range("F3") = CASA.Text
        Range("G3") = TEL.Text
        Range("H3") = lblcodigopost
        'Range("I3") = mtxlocat(X1, 0)
        'Range("J3") = mtxlocat(X1, 1)
        'Range("K3") = mtxlocat(X1, 2)
        Range("I3") = CODLOCATIVAS.List(X1, 0)
        Range("J3") = CODLOCATIVAS.List(X1, 1)
        Range("K3") = CODLOCATIVAS.List(X1, 2)
        Range("L3") = 0
        Range("M3") = 1
        Range("N3") = 1
        Range("P3") = Empty
        Range("Q3") = Empty
        Range("R3") = ComboBox_tipo.Text
        Range("S3") = CONTRATISTA.Text
        Range("T3") = RAD
        Range("U3") = "ABIERTA"
        Range("V3") = OBSERVACION.Text
        Range("W3") = Empty
        Range("Y3") = Empty
        Range("Z3") = Empty
        Range("AA3") = Empty
        Range("AA3") = Empty
        Range("AF3") = Empty
        Range("AG3") = Empty
        'Res = MsgBox("Loc. solucionada sin firma del solicitante?", vbYesNo)
        'Select Case Res
        'Case Is = vbYes
        'Range("R") = 1
        'Case Is = vbNo
        'Range("R") = 0
        'End Select
    Next X1
    Res = MsgBox("DATOS INGRESADOS, DESEA CONTINUAR CON UN NUEVO REGISTRO?", vbYesNo)
    Select Case Res
        Case Is = vbYes
            RAD = ""
            lblcodigopost = ""
            CONTRATIS = ""
            APTO = ""
            CASA = ""
            TEL = ""
            FECSOLU = ""
            'FECIN = ""
            cmbx_grtia = ""
            ComboBox_tipo = ""
            cmbxpostventas = ""
            CODLOCATIVAS = ""
            CONTRATISTA = ""
        Case Is = vbNo
            Unload Me
    End Select
    ActiveSheet.Protect ("80178848"), AllowFiltering:=True
End Sub

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas