¿Cómo crear una hoja a partir de otra con Macros Excel?

Deseo saber como crear una macros que me permita crear una una nueva hoja en un mismo libro hasta que cierta condición se cumpla.

De la hoja "interación(1)" obtengo ciertos valores en las celdas (Z51 a Z68) y (AA51 a AA68) y (AX16 a AX33) que deseo aparezcan en una hoja nueva que llamaré "iteración(2)" la cual debe ser una copia de "iteración(1)" debido a que se realizan varios cálculos con las mismas fórmulas. Los valores de las celdas que deseo aparenzan en la hoja nueva, deben sustituir valores.

Tratando de explicar lo mejor posible, requiero que la macro haga lo siguiente:

1... Crear una hoja nueva ("iteración2"), debe ser copia de la hoja "iteración1"

2... Celdas que "iteración1" que deseo aparezcan en la nueva hoja

(Z51 hasta Z68) | (AA51 a AA68) | (AX16 a AX33)

La celda AY34 de "iteracion1" tiene un valor, por ejemplo: 50.5892...

3... Celdas que deben ser reemplazadas en la hoja "iteración2" por las celdas anteriores

(C16 hasta C33) | (B16 a B33) | (J16 a J33)

La celda AY34 de "iteracion2" tendrá un nuevo valor, por ejemplo: 33.2345...

4... Crear una hoja nueva ("iteración3"), debe ser copia de la hoja "iteración2"...

4.1.. Celdas que "iteración2" que deseo aparezcan en la nueva hoja

(Z51 hasta Z68) | (AA51 a AA68) | (AX16 a AX33)

4.2.. Celdas que deben ser reemplazadas en "iteración3" por las celdas anteriores

(C16 hasta C33) | (B16 a B33) | (J16 a J33)

La celda AY34 de "iteracion3" tendrá un nuevo valor, por ejemplo: 22.3433...

5... Deseo poder repetir este ciclo hasta una hoja "iteraciónN", (donde N va a ser el número de la hoja en la que el valor de la celda AY34 sea menor a 0.018.

NOTA: Debo mencionar, que en la hoja "iteración1" tengo una macro, que busca objetivo en varias celdas.

      Sub temperaturas()
      Dim intFila As Long
      For intFila = 16 To 33
      ActiveSheet.Cells(intFila, 48).GoalSeek goal:=1, changingcell:=ActiveSheet.Cells(intFila, 41)
      Next intFila
      End Sub

Esta macro, debe estar presente en cada hoja nueva, y ejecutarse automáticamente, dado que los valores de cada hoja están están relacionados entre sí.

Si pudieran ayudarme estaría profundamente agradecido.

1 Respuesta

Respuesta
1

H o l a:

Te anexo la macro, pon la siguiente macro en un módulo.

Sub CopiarHojas()
'Por.Dante Amor
    Set h1 = Sheets("iteracion1")
    h1.Select
    n = 2
    Do While True
        If ActiveSheet.Range("AY34") < 0.018 Then Exit Do
        h1.Copy After:=Sheets(Sheets.Count)
        Set h2 = ActiveSheet
        h2.Name = "iteracion" & n
        n = n + 1
        h1.Range("Z51:Z68").Copy
        H2. Range("C16"). PasteSpecial xlValues
 h1. Range("AA51:AA68"). Copy
 h2. Range("B16"). PasteSpecial xlValues
 h1. Range("AX16:AX33"). Copy
 h2. Range("J16"). PasteSpecial xlValues
        Call temperaturas
    Loop
    MsgBox "Fin"
End Sub

Antes de ejecutar la macro, revisa que la macro temperaturas esté en un módulo. La macro CopiarHojas, después de crear la hoja y realizar las copias de las celdas ejecutará la macro "temperaturas", pero deberá estar en un módulo.

En esta línea de la macro, revisa que el nombre de la hoja a copiarse sea el correcto:

Set h1 = Sheets("iteracion1")

Te sugiero que ejecutes la macro paso a paso para que vayas observando el resultado en la celda AY34, y veas que realmente está disminuyendo, si no está disminuyendo y ejecutas la macro te creará un sin fin de hojas.


' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

¡Gracias!

Lo único, es que la macro, solo copia la hoja "iteracion1" cada vez, estoy tratando que después de hacerlo la primera vez; la segunda vez copi "iteracion2" y y haga lo demás.

Cambia esta línea

Set h1 = Sheets("iteracion1")

Por esta:

Set h1 = activesheet

Ejecuta la macro sobre la hoja que quieras copiar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas