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
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
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