Saltar al contenido

Borrar campo listas desplegables con macros


Recommended Posts

publicado

Hola a todos, mi nombre es Gema. Os expongo la situación:

Tengo una lista desplegable ("Servicios") en varias filas de una misma columna (C24:C50) y otra ("Categorías") dependiente de la anterior (D24:D50). 

Cuando modifico un elemento de la lista dependiente "Categorías" necesitaría que se borrara el campo de la lista anterior "Servicios", para que no haya una incongruencia de datos en el caso de que se modifique. He probado incorporando la siguiente macro, pero da error:

Private Sub Worksheet_Change(ByVal Target As Range)
 
If Target = Range("C24:C50") Then
    Range("D24:D50").Value = ""
End If
 
End Sub

¿Sabríais decirme de qué forma podría solucionarlo? Mil gracias!!

 
 
 
publicado
Hace 43 minutos , gema.ramirezguerrero@gmail dijo:

¿Sabríais decirme de qué forma podría solucionarlo? Mil gracias!!

No, si no subes tu archivo de ejemplo para ver qué necesitas, es difícil adivinar ?

publicado

@gema.ramirezguerrero@gmail esto entra en contradicción:

En 20/5/2020 at 12:41 , gema.ramirezguerrero@gmail dijo:

Cuando modifico un elemento de la lista dependiente "Categorías" necesitaría que se borrara el campo de la lista anterior "Servicios"

con:

En 20/5/2020 at 14:53 , gema.ramirezguerrero@gmail dijo:

Lo que necesitaría es que las celdas de la columna D, que forman parte de listas desplegables a través de validación de datos, se pusieran en blanco si el valor del que dependen (columna C - otra lista desplegable) se modificara.

¿Qué vas a modificar "SERVICIOS" o "TIPO"? SI por casualidad fuesen los servicios ¿Eliminarías alguno para poner otro nuevo, o qué tipo de modificación sería?

publicado

Hola Gema

Según entiendo, tu código debería ir así

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C24:C50")) Is Nothing Then
        Target.Offset(0, 1).Value = ""
    End If
End Sub

 

publicado
Hace 19 horas, Haplox dijo:

@gema.ramirezguerrero@gmail esto entra en contradicción:

con:

¿Qué vas a modificar "SERVICIOS" o "TIPO"? SI por casualidad fuesen los servicios ¿Eliminarías alguno para poner otro nuevo, o qué tipo de modificación sería?

Se modificaría la columna C "SERVICIOS" para poner otro. Lo que necesitaría es que, una vez cumplimentada por el usuario esa tabla, si se modificara cualquier celda de la columna C, su correspondiente celda en la columna D, se pusiera en blanco o saliera algún aviso, de forma que el usuario se de cuenta de que los valores que aparecen en la columna D no corresponden con el nuevo elemento que haya puesto en la columna C anteriormente. Espero haberme explicado bien. Mil gracias!! 
 

publicado
Hace 19 horas, DiegoPC dijo:

Hola Gema

Según entiendo, tu código debería ir así


Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C24:C50")) Is Nothing Then
        Target.Offset(0, 1).Value = ""
    End If
End Sub

 

Hola Diego, muchas gracias! He probado con el código, pero me temo que no se ejecuta ningún cambio. 

publicado

Prueba poner esta macro en tu hoja.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address Like "$C$*" Then Range("D" & Target.Row) = ""
Application.EnableEvents = True
End Sub

 

publicado
En 22/5/2020 at 18:06 , Antoni dijo:

Prueba poner esta macro en tu hoja.


Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address Like "$C$*" Then Range("D" & Target.Row) = ""
Application.EnableEvents = True
End Sub

 

Casi lloro al comprobar que este código funciona a la perfección!! Muchísimas gracias por la ayuda. De 10!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.