Macro para copiar hojas consecutivas, definidas por mi y que además continúe un correlativo en cada nueva hoja

He creado una planilla con dos hojas. Una es la base de datos, que contiene todos los productos y sus especificaciones y la otra es la planilla de registro.

En la planilla de registro tengo una celda con ventana desplegable de la cual busco el producto que necesito, luego con la función buscarv se me rellenan todos los datos asociados a ese producto, tales como el cliente, el equipo donde se produce y sus especificaciones técnicas.

También he creado una macro para que guarde la planilla en una nueva con el nombre del producto y su lote

Ahora, qué es lo que necesito y no lo he logrado del todo

Los productos que hacemos se producen en sub-lotes Es decir, se genera una orden de trabajo, por ejemplo 22345

Y el producto que se fabricará será por 5000 Kg, la producción se divide en 5 sub-lotes de 1000 Kg

Entonces, lo que necesito es que la macro me copie la hoja de registro a una nueva y la remobre, para este caso son 5 sublotes, entonces, que copie la hoja 4 veces más para tener los 5 sublotes y que los renombre que como sublote 02, sublote 03 ... Etc, o simplemente 02, 03,... Etc.

Ahora, también necesito que la hoja que se copie contenga los mismos datos que la hoja registro y algo importante,

En una celda tengo que asignar el lote, por ejemplo S150922345-01, lo que necesito es que en la siguiente hoja que se llamará por ejemplo 02, la celda del lote contenga S150922345-02, y en la tercera S150922345-03 y así sucesivamente.

Lo "complicado" es que no siempre son 5 sublotes, a veces son más a veces son menos. Yo intenté con una ventana inputbox que me preguntaba cuantos lotes serán y completaba las hojas de acuerdo a eso, pero no sé si esa sea la forma más simple o adecuada

Y por último y tampoco me ha resultado es que cada sublote tiene un correlativo de registro, por ejemplo 28280 para el sublote 01, lo que quiero es que al generar un nuevo sublote ese correlativo aumente en la siguiente hoja a 28281 y en la siguiente a 28282 y así sucesivamente. Ahora lo dificil es que luego al abrir de nuevo la hoja de registro que tendrá nuevamente las hojas de base de datos y registro el correlativo aparezca en 28285, ya que 28284 sería el correlativo de la hoja del sublote 5.

Yo hice una macro para que cuando abra el registro automaticamente se aumente ese correlativo, pero tratándose de una hoja, ahora como serán varias hojas no sé como hacerlo, espero me puedan ayudar. Esta es mi macro:

Para copiar las hojas

Sub copiar_2()

Dim n As Integer

n = InputBox("Ingrese la cantidad de sublotes")

For numtimes = 1 To n - 1

ActiveWorkbook.Sheets("01").Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)

nombre = InputBox("nombre del sublote")

ActiveSheet.Name = nombre

next

end sub

Para el correlativo

Range("e2").Value = Range("e2").Value + 1

ThisWorkbook. Save

1 Respuesta

Respuesta
1

Tienes pendiente valorar la otra respuesta.

Para esta respuesta, envíame tu archivo y ahí me explicas cómo se deben quedar las 5 hojas para el ejemplo que mencionas.

H o l a:

Te anexo la macro:

Sub copiar_2()
'Por.Dante Amor
    Dim n As Integer
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.CopyObjectsWithCells = False
    For h = 3 To Sheets.Count
        Sheets(h).Delete
    Next
    Set h1 = Sheets("01")
    lote = h1.[D5]
    If lote = "" Then
        MsgBox "Captura el lote"
        Exit Sub
    End If
    g = InStrRev(lote, "-")
    If g = 0 Then
        MsgBox "Falta el guión en el lote"
        Exit Sub
    End If
    '
    lote = Left(lote, g - 1)
    lab = h1.[E2]
    num = InputBox("Ingrese la cantidad de sublotes")
    For n = 2 To num
        h1.Copy After:=Sheets(Worksheets.Count)
        ActiveSheet.Name = Format(n, "00")
        ActiveSheet.[D5] = lote & "-" & Format(n, "00")
        lab = lab + 1
        ActiveSheet.[E2] = lab
    Next
    '
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.CopyObjectsWithCells = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas