Imprimir página | Cerrar ventana

Borrar registro de tabla con VBA

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84857
Fecha de impresión: 26/Marzo/2026 a las 19:24


Tema: Borrar registro de tabla con VBA
Publicado por: John_Arnedo
Asunto: Borrar registro de tabla con VBA
Fecha de publicación: 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" rel="nofollow - 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. 






Respuestas:
Publicado por: AnSanVal
Fecha de publicación: 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.


Publicado por: John_Arnedo
Fecha de publicación: 27/Noviembre/2019 a las 00:07
Funcionó perfectamente AnSanVal. 

¡Eres el mejor! muchas gracias.


Publicado por: AnSanVal
Fecha de publicación: 27/Noviembre/2019 a las 01:58
Gracias por comentar el resultado.

-------------
Saludos desde Tenerife.



Imprimir página | Cerrar ventana