** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Borrar registro de tabla con VBA
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoBorrar registro de tabla con VBA

 Responder Responder
Autor
Mensaje
John_Arnedo Ver desplegable
Habitual
Habitual
Avatar

Unido: 13/Febrero/2009
Localización: Colombia
Estado: Sin conexión
Puntos: 196
Enlace directo a este mensaje Tema: Borrar registro de tabla con VBA
    Enviado: 26/Noviembre/2019 a las 07:32
Saludos a la comunidad: 

Trabajo en una tabla con columnas validadas con Listas dependientes, si un usuario en la columna1 señala un dato (desplegable), la columna2 muestra unos relacionados. Hasta ahí todo bien

El problema se da al querer modificar un registro previamente llenado. Una que otra vez el usuario ha modificado la columna1 y se olvida de actualizar la columna2 y excel le permite hacer esa modificación dejando todo mal validado.

Encontré un video en youtube (https://www.youtube.com/watch?v=u8n3k45EnKA) donde prácticamente resuelven este problema mediante el siguiente código: 

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("B14").Address Then
Range("C14").Value = ""
End If
End Sub


Sin embargo aunque ese código funciona perfectamente, no sé como hacer referencia a una tabla para que vacíe la parte de registro que se ha modificado. He intentado modificando el anterior código así: 

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("TblCasos[Clase de proceso]").Address Then
Range("TblCasos[Trámite / Derecho fundamental]").Value = ""
End If
End Sub


Pero no hace nada, ni siquiera arroja error. Siento que mi problema es que no sé hacer referencia específica a la fila dentro de la tabla y es por eso que pido su ayuda. 



Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5972
Enlace directo a este mensaje Enviado: 26/Noviembre/2019 a las 14:29

Puedes hacerlo igual que con un rango ordinario, pero no es correcto hacer referencia a una celda concreta, por ejemplo B14 (pues tendrías que poner una linea de código para cada fila de la tabla).


Prueba con lo siguiente (ojo => en el módulo de la hoja que contiene tu tabla):


Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Column = 2 Then Target.Offset(0, 1).ClearContents

End Sub



Saludos desde Tenerife.
Arriba
John_Arnedo Ver desplegable
Habitual
Habitual
Avatar

Unido: 13/Febrero/2009
Localización: Colombia
Estado: Sin conexión
Puntos: 196
Enlace directo a este mensaje Enviado: 27/Noviembre/2019 a las 00:07
Funcionó perfectamente AnSanVal. 

¡Eres el mejor! muchas gracias.
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5972
Enlace directo a este mensaje Enviado: 27/Noviembre/2019 a las 01:58
Gracias por comentar el resultado.
Saludos desde Tenerife.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable