Como cambiar la sintaxis de una línea de código

Esta línea de código me permite eliminar de una hoja de excel la fila seleccionada desde un formulario

Cells(rango. Row, rango. Column). EntireRow. ClearContents

El problema es que me elimina toda la fila, dañándome el resto de fórmulas de las otras columnas

Solo busco que me elimine la fila seleccionada desde el formulario pero desde B hasta G, es decir no la fila, sino los datos de esa fila

Muestro la imagen

1 Respuesta

Respuesta
1

Para aborrar las celdas de la fila seleccionada:

x = ActiveCell.Row     'suponiendo que intentas eliminar la fila de la celda activa

Range("A"& x & ":G" & x).ClearContents

Range("I"& x & ":I" & x). ClearContents 'si hubiese que borrar también la de fechas

NOTA; no es necesario utilizar una variable, solo la dejo para que la instrucción se vea más clara. Bien puede ser:

Range("A"& ActiveCell.Row & ":G" & ActiveCell.Row).ClearContents

Gracias sra elsa pero no funciono, no sale error pero visual no reocnoce el código

el codigo q me envias se lo anexe al formulario del boton ELIMINAR, pero NO borro los datos de la fila.  lo datos quedaron intactos

¿Y cómo podría yo adivinar tu código o el modo en que lo has pegado o adaptado?

Lo que se espera es que dejes TU código del botón Eliminar y así poder agregar las instrucciones que faltan.

Sdos!

Este es el código del botón eliminar del formulario que ve en pantalla

'Código para eliminar datos desde el formulario

Private Sub CommandButton4_Click()
Dim respuesta As Integer, ctr As Control
If rango Is Nothing Then
MsgBox "Aun no buscas ningun dato", vbOKOnly + vbInformation, "AVISO"
ComboBox1.SetFocus
Exit Sub
End If
respuesta = MsgBox("¿Estas seguro de eliminar el registro elegido?", vbCritical + vbOKCancel, "AVISO")
If respuesta = vbOK Then
Sheets("INVENTARIO").Unprotect "5"
Cells(rango.Row, rango.Column).EntireRow.Delete       ' <-----aqui es donde radica el problema
Sheets("INVENTARIO").Protect "5"
For Each ctr In Me.Controls
If TypeOf ctr Is MSForms.TextBox Then
ctr = ""
End If
Next ctr
Exit Sub
End If
MsgBox "Operacion cancelada", vbOKOnly + vbInformation, "AVISO"
Unload Me
End Sub

Bien. Estás desprotegiendo una hoja donde le indicas el nombre... eso me hace pensar que no se trata de la hoja activa.

Luego, estás preguntando si quiere 'eliminar el registro elegido' pero en esta macro no se está indicando cuál es la fila del registro. Eso seguramente se obtiene con el botón BUSCAR.

1 - Es decir, que al BUSCAR y mostrar los campos en el formulario se debe guardar la fila encontrada en una variable. Y esa variable debe ser declarada al inicio del UF como:

Dim x as Integer    'fila encontrada

2 - Salvo que al BuSCAR ya se selecciona la celda encontrada y entonces se trata de la hoja activa... y en ese caso bien valen las instrucciones enviadas mencionando ActiveCell. Row.

Si lo tuyo es el caso 1, las instrucciones para ese sector del código serán como se observa en la imagen. El uso de With me asegura de estar trabajando en la hoja que se desprotege, sea la activa o no.

El código para la parte del IF respuesta = vbOkey :

If respuesta = vbOK Then
    With Sheets("INVENTARIO")
        .Unprotect "5"
        .Range("A" & x & ":G" & x).ClearContents
    'Cells(rango. Row, rango. Column). EntireRow.Delete       ' <-----aqui es donde radica el problema
        .Protect "5"
    End With
    For Each ctr In Me.Controls
    If TypeOf ctr Is MSForms.TextBox Then
    ctr = ""
    End If
    Next ctr
    Exit Sub
End If

Si en cambio es el caso 2 no necesitas la variable y solo debes cambiar la instrucción de borrado por esta otra:

          .Range("A"& ActiveCell.Row & ":G" & ActiveCell.Row).ClearContents

Si te llega a marcar algún error presiona DEPURAR y toma imagen del sector del código donde se marca de color para que pueda observar cómo has copiado las instrucciones. Y por supuesto con las aclaraciones: si es hoja activa, cómo se indica la fila a borrar, etc

Sdos!

el fomulario funciona asi como vso decis

1. se digita el codigo y se da buscar y estos aparacen en el fomulario,, para modificar o eliminar ok, bien, o se digita un nuevo codigo y se le da ingresar, ok

El problema radica que es se elimina la fila la de abajo se sube.

Creo que más bien voy a quitar este botón de eliminar, me esta generando inconvenientes con otra hoja (resumen mensual)

Si se elimina la fila en inventario se daña la fórmula acá,

te puedo enviar el archivo?

Sin entrar a mirar lo último que me comentas, quiero que sepas que la instrucción CLEARCONTENTS no elimina filas,,,.. solo las borra (dejándolas en el mismo lugar pero vacías)

Entonces enviame tu libro... pero dejame aclarado qué quieres hacer: eliminar celdas o solo borrarlas. Porque si eliminas solo un rango, el resto de los datos quedará en otra fila.

Toma alguno de los correos que aparecen en portada de mi sitio.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas