Procedimiento para borrar filas según valor de textbox

Con un botón de borrar busca todas las filas de la hoja que tengan en la columna A el valor del Textbox1, utilice el procedimeinto si en el while, pero siempre me quedaban filas con los valores, pues el contador se agota y conforme va borrando van quedando filas encima.

Pero con el while la idea era que hiciera otra pasada del for next y borrara las filas que va quedadndo, no obstante entra en un bucle infinito.

Nota el i=2 no lo uso sin el while

Por favor pueden revisar mi código y ver que está mal.

Gracias expertos

Private Sub CommandButton10_Click()

Dim contador As Integer
Dim contadorb As Integer

Sheets("Movimientos").Visible = True
Sheets("Movimientos").Activate
'ActiveCell.CurrentRegion.Select
Set h2 = Sheets("Movimientos")

contador = h2.Range("A2").CurrentRegion.Rows.Count

Set h2 = Sheets("Movimientos")

i = 2

Do While CLng(h2.Cells(i, 1).Value) <> CLng(Me.TextBox1.Value)

For i = 2 To contador

If CLng(h2.Cells(i, 1).Value) = CLng(Me.TextBox1.Value) Then

With Sheets("Movimientos")
.Range("A" & i).EntireRow.Select
.Range("A" & i).EntireRow.Delete

'Cells(i, 1).EntireRow.Delete

End With

End If

Next i

Loop

End Sub

1 Respuesta

Respuesta
1

H   o l a: Te anexo la macro.

Si estableces en h2 la hoja, no es necesario que la hagas visible.

Para que el contador no tenga problemas debes empezar a leer desde la última fila hacia 1, para eso se utiliza el parámetro Step -1

Private Sub CommandButton10_Click()
'---
'Por.Dante Amor
'---
    Set h2 = Sheets("Movimientos")
    For i = h2.Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
        If CLng(h2.Cells(i, "A").Value) = CLng(Me.TextBox1.Value) Then
            h2.Rows(i).Delete
        End If
    Next
    MsgBox "Fin"
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Al correrlo me borar pero me muestra un error de no coincide los tipos y marca la línea

If CLng(h2.Cells(i, "A").Value) = CLng(Me.TextBox1.Value) Then

Creo que es por que A1 es el encabezado y los valores a buscar son números

Qué hago?

Gracias

Cambia esto:

For i = h2.Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1

Por esto

For i = h2.Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1

De esa forma solamente llega hasta la fila 2

Y si en la celda tienes números, entonces no es necesario que pongas esto:

CLng(h2.Cells(i, "A"). Value)

Tendría que quedar simplemente así:

If h2.Cells(i, "A").Value = CLng(Me.TextBox1.Value) Then
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas