Saltar al contenido

Método para insertar y eliminar columnas formuladas de tabla

publicado

Hola como están, una pregunta para los capos de Macros

Bueno yo estoy trabajando con una tabla con formulas(que es mi objeto) y tengo una macro que busca insertar/eliminar filas y columnas de este objeto dependiendo de ciertos valores

Declaro lo siguiente:

Sub ActualizarTabla()

Dim f&, c&, oldRows&, newRows&, oldColumns&, newColumns&

f = Range("H1")

c = Range("H2")

With ListObjects(1)

oldRows = .Range.Rows.Count

oldColumns = .Range.Columns.Count

newRows = f + 1

newColumns = c + 1

newRows = Application.Max(3, newRows)

.Resize .Range.Resize(newRows, newColumns)

If newRows < oldRows Then .Range.Offset(newRows).Resize(oldRows - newRows).Delete xlShiftUp

If newColumns < oldColumns Then .Range.Offset(newColumns).Resize(oldColumns - newColumns).Delete xlShiftToLeft

End With

End Sub

Defino estas variables como:

oldRows = Numero de filas previo al cambio de valores

oldColumns = Numero de columnas previo al cambio de valores

newRows = Numero de filas luego de cambio de valores

newColumns = Numero de columnas luego de cambio de valores

Aquí viene el problema: La macro si me funciona en lo que respecta a filas ( lo que hace es, en caso el numero de filas DESPUÉS del cambio de valores sea MAYOR al numero de filas ANTES del cambio de valores, insertar el numero de filas que faltan ( newRows - oldRows). Y si en caso sucede lo contrario (oldRows > newRows), lo que hace es eliminar el exceso de filas que hay.

Es decir, con la macro funciona para insertar y eliminar filas formuladas.

Por ejemplo si mi tabla tenia antes del cambio 50 filas y luego con el cambio esta debería de tener 20, lo que me hace la macro es eliminarme las 30 filas de sobra que hay (50-20).

Hasta aquí todo bien.

Pero cuando corre la parte de las columnas, lamentablemente no funciona.

Yo sospecho que la clave esta en analizar :

.Resize .Range.Resize(newRows, newColumns)

No se que opinan ustedes.

Saludos

Featured Replies

No hay posts para mostrar

Archivado

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