Eliminar fila

Hola Fernado
En un Formulario tengo este código que elimina datos en las celdas, al coincidir con los que ingrese en el formulario epro l lo que necesito es que elimine toda la fila, es que como esta elimina solo los datos y entonces me queda una fila vacía en medio.
Gracias
Private Sub C1_Click()
Dim i As Integer
Dim D As Double
For i = 2 To UltimaFila
Range("A" & i).Select
D = ActiveCell
If D = txtCodigo Then
Range("A" & i).Select
ActiveCell.FormulaR1C1 = ""
Range("B" & i).Select
ActiveCell.FormulaR1C1 = ""
Else
End If
Next i

1 respuesta

Respuesta
1
Ok. Es importante que tengas en cuenta que al eliminar filas, las referencias de celda cambian. Por esta razón es necesario ajustar lo que llamas UltimaFila pues la que antes estaba como última fila, "sube" cada vez que eliminas una fila. Eventualmente, podrías estar ejecutando un bucle eterno o, por el contrario, la macro podría detenerse antes de tiempo.
Por esa razón te sugiero esta alternativa que, además, evita la selección de celda y varios pasos de programación (esto significa una reducción en el tiempo de ejecución):
Private Sub C1_Click()
LaFila = 2
Do While LaFila <= UltimaFila
If Range("A" & LaFila).Value = txtCodigo Then
Range("A" & LaFila).EntireRow.Delete
UltimaFila = UltimaFila - 1
Else
LaFila = LaFila + 1
End If
Loop
End Sub
Como verás cambié la estructura For...Next por una Do...While. De esta manera puedo manejar el valor de la fila (en For i = ... i se incrementa en una unidad en cada vuelta indefectiblemente.
Espero aue esta solución te satisfaga
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas