es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Borrar el contenido de una columna en la tabla de Excel en función del valor específico de una celda.

Tengo la siguiente tabla en mi archivo de Excel con habilitación de macros,

Tabla1:

Imagen de la tabla

Mi objetivo es:

Antes de cerrar este libro, necesito borrar el contenido de la columna D (mostrada como “Columna 4” en la Tabla1), solo donde el valor de las celdas de la columna D sea igual a 999. Por ejemplo, viendo la captura de pantalla de arriba, el contenido de las celdas D2 y D4 debe ser borrado cuando se active el evento de “cerrar libro”.

Importante: si el usuario crea un nuevo registro(s) en esta tabla, entonces cualquier celda nueva bajo la columna D también podría tener el valor 999. Si un nuevo registro contiene el valor 999 en la columna D, ¡debe ser borrado! ¡Cualquier nuevo registro donde el valor de la celda sea igual a 999 en la columna D debe ser borrado!

El siguiente código VBA está siendo usado, pero no está funcionando:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Dim sht As Worksheet
    Set sht = ThisWorkbook.ActiveSheet

    If Worksheets("Sheet1").ListObjects("Table1").Columns(4).Value = 999 Then
        Worksheets("Sheet1").ListObjects("Table1").Columns(4).ClearContents
    End If

End Sub
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para borrar el contenido de la columna D en la Tabla1 de un archivo de Excel:

    Para lograr el objetivo de borrar el contenido de la columna D en la Tabla1 antes de cerrar el libro, podemos utilizar el siguiente código VBA:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Dim sht As Worksheet
       Set sht = ThisWorkbook.ActiveSheet
    
       Dim tbl As ListObject
       Set tbl = sht.ListObjects("Table1")
    
       Dim colD As Range
       Set colD = tbl.ListColumns(4).DataBodyRange
    
       Dim cell As Range
       For Each cell In colD
          If cell.Value = 999 Then
             cell.ClearContents
          End If
       Next
    End Sub
    

    Este código primero define los objetos de la hoja de trabajo (sht) y la tabla (tbl). Luego, selecciona el rango de la columna D (colD) del rango de datos de la tabla. Finalmente, recorre cada celda de colD y verifica si el valor de la celda es 999. Si es verdadero, borra el contenido de la celda.

    Ten en cuenta que este código también funcionará si se agrega un nuevo registro a la Tabla1 con un valor de celda de 999. Cuando se cierre el libro, la nueva celda también se borrará.

    Al utilizar este código, se puede lograr el objetivo de borrar el contenido de la columna D en la Tabla1 antes de cerrar el libro.

Comments are closed.