Modificar macro vba que copia fórmulas

Sub copiaformula()
  Dim fila As Long
  Dim sh As Worksheet
  '
  Application.ScreenUpdating = False
  Set sh = Sheets("10")
  fila = ActiveCell.Row
  If fila < 33 Then
    MsgBox "Debes seleccionar una fila mayor a 32"
    Exit Sub
  End If
  sh.Rows(32).Copy sh.Rows(fila)
  sh.Rows(fila).Copy
  sh.Rows(fila).PasteSpecial xlValues
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
End Sub

esta macro lo que hace es que copia las formulas y las ejecuta de acuerdo a la fila donde este posicionado. La macro funciona excelente solo que copia las formulas de toda la fila de la hoja y yo quisiera que se le pudiera modificar que lo hiciera en un rango determinado, en este caso de la columna A a la GSV.. Ya que asi la podria usar despues en futuros archivos y escenarios... 

1 respuesta

Respuesta
2

Prueba así:

Sub copiaformula()
  Dim fila As Long
  Dim sh As Worksheet
  '
  Application.ScreenUpdating = False
  Set sh = Sheets("10")
  fila = ActiveCell.Row
  If fila < 33 Then
    MsgBox "Debes seleccionar una fila mayor a 32"
    Exit Sub
  End If
  sh.Range("A32:GSV32").Copy sh.Range("A" & fila)
  With sh.Range("A" & fila & ":GSV" & fila)
    .Copy
    .PasteSpecial xlValues
  End With
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
End Sub

Gracias Dante, la macro funcionabien por rangos, y la probé en varios escenarios, excelente,, lo único es que se demora mucho ejecutando.. aveces hago la prueba copiando y pegando las fórmulas manuealmente de algún rango y funciona más rápido. ¿Sabes si se le puede cambiar alo para que lo haga más rápido? De ser así te agradecería me ahorraría tiempo, pero si no es posible daré buena valoración ya que hace lo que solicite.. mil gracias

Como te había comentado el proceso de copiar y pegar, demora de 3 a 4 segundos. Son 5,200 fórmulas!

La idea de esta pregunta era limitar el rango de columnas, porque la macro copiaba toda la fila.

La macro ya tiene esta instrucción:

Application.ScreenUpdating = False

Eso es lo que la hace más rápida.

¡Gracias! Cuando la pruebo en un archivo más pesado con más datos.. aun así copiando y pegando la misma cantidad de fórmulas, demora más del minuto en ejecución... quise probarlo copiando y pegando manualmente las fórmulas, y manualmente demora mucho menos que la macro... por eso asumí tal vez, que era algo en la macro... pero de igual manera hace su trabajo... mil gracias Dante...

Para esa cantidad de fórmulas, lo mejor es realizar el proceso en memoria. Pero ya viste que la macro es complicada tanto como la fórmula.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas