Macro que borre datos de una celda

Tengo 4 columnas A B C D en las celdas de las cuatro columnas se ingresan datos, lo que necesito es una macro que haga lo siguiente, suponiendo que estoy posicionado en la celda B3 cuyo dato es el numero 100 que me borre dicho importe siempre y cuando en la celda D3 este vacía, y así cuando me posicione en cualquier otra celda es decir si estoy en A2 y el dato es 500 que me borre A2 siempre y cuando D2 este vacía

1 respuesta

Respuesta

¿Entiendo qué se debe ejecutar ante cualquier cambio en col A y B... También en C?

Además, ¿se debe evaluar el importe o sólo que no este vacía la D?

Así es Elsa cualquier cambio en las celdas de la columna A B y C es decir suponiendo que estoy en la fila 3 de la columna C o sea C3 y el importe de C3 es 100 el de A3 es 20 el de B3 es 40 pregunto si D3 esta vacío si esta vacía borro A3 B3 C3 y el cursor se posiciona en A3 y termina la macro 

Bien, entonces los importes no tienen importancia...

Entrá al Editor, seleccioná con doble clic el objeto HOJA donde vayas a trabajar y allí coloca esto:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'x Elsamatilde

'se controla la selección en col A:C
If Target.Column > 3 Then Exit Sub
If Range("D" & Target.Row) = "" Then Range("A" & Target.Row & ":C" & Target.Row) = ""

Range("A" & Target.Row).select
End Sub

Esto responde a lo solicitado: '... y así cuando me posicione en cualquier otra celda'... por eso el evento SelectionChange, es decir que al seleccionar alguna celda de esas 3 col se ejecutará.

Pero no te servirá si luego intentas rellenar esas celdas porque rellenas A y cuando te pases a B, si D está vacía, se volverá a borrar A... por lo tanto aclara un poco cual es el objetivo de esto, quizás deba ser ejecutado de otro modo limpiando primero todo el rango.

Sdos!

Disculpa elsa pero me explique mal, en las celdas de las columna A B y C me tiene que permitir ingresar datos y después cuando me posicione en cualquier celda de las columnas A B yC por intemedio de un command button que ejecute una macro que sea condicional por ejemnplo estoy en la fila 5 en A5 hay un numero B4 hay otro numero y en C4 esta vacío esa macro borra los datos de A5 B5 y C5 siempre y cuando D5 este vacío sino lo deja todo como esta espereo me hayas entendido gracias por tu ayuda

Si, me pareció raro que sea al posicionarte... bien aquí va arreglada, ahora se coloca en un módulo y te sugiero que la ejecutes con algún atajo de teclado para no tener que presionar un botón.

El tema de cómo asignar un atajo de teclado lo tengo explicado aquí.

Sub eliminaSeleccion()
'x Elsamatilde

'atajo de teclado: Ctrl ......   la letra que quieras
'se controla que la celda seleccionada sea en col A:C
If ActiveCell.Column > 3 Then Exit Sub
If Range("D" & ActiveCell.Row) = "" Then Range("A" & ActiveCell.Row & ":C" & ActiveCell.Row) = ""

Range("A" & ActiveCell.Row).Select
End Sub

Sdos!

Te recuerdo que la consulta sigue abierta... si algo no se comprendió comentalo.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas