Agregar botón para un "N" numero de copias

Sub generar()
Hoja3.Columns("A:IV").Delete

fin = Hoja1.Range("b65536").End(xlUp).Row            (eliminar , si no es necesario)
Hoja1.Range("b2").Select           

For y = 0 To Int((fin + 1) / 2)
For k = 0 To 1
Hoja2.Range("a1:BC56").Copy Destination:=Hoja3.Cells((56 * y) + 1, (55 * k) + 1)
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "" Then End
Next k
Next y
End Sub

Tengo este código y quisiera me ayudara a modificarlo, por favor

Agregar un panel parecido a la imagen

- Donde pregunte que plantilla quiero y cuantas copias necesito, para que se peguen en la hoja 3.

- Que la caja de texto este en la hoja 3

Si es necesario quitar algunas líneas del código no hay problema.

El código que coloque al principio, es solo una plantilla, agrego el enlace donde esta la hoja de excel donde aparece las otras tres plantillas. Lo que me interesa ahora es colocar el botón para elegir la plantilla y el numero de copias. Pero si pueden ayudar a agregar las otras plantillas les agradecer, ya que e intentado hacerlo pero no se en que parte escribo mal el código y da error.

https://drive.google.com/file/d/1RKiEv6g5sbc_NEZeFHcaFNpuWaKIWtOl/view?usp=sharing 

1 respuesta

Respuesta
2

Responde en el siguiente orden:

1. Tu macro copia un rango de celdas de la hoja2 y lo pega en la hoja3.

Tienes 2 ciclos For, si pongo los ciclos

For y = 0 to 1

For k = 0 to 1

Me genera 4 copias, 2 copias hacia la derecha y 2 copias hacia abajo.

Si quisieras 6 copias, cómo sería el resultado:

a) 3 copias hacia la derecha y 2 hacia abajo

b) 2 hacia la derecha y 3 hacia abajo.

2. ¿Las celdas a copiar tienen fórmulas o solamente son datos?

3. Cómo quieres el "Selector de planillas".

  • a) ¿Quieres un userform?
  • b) En una hoja, ¿en una celda una lista de validación con hojas y en otra celda poner el número de copias?
  • c) En una hoja, ¿poner un combo con la lista de validación y un textbox para poner el número de copias?

buen día.

1. así es, la macro copia un rango  de celdas de la hoja 2 y lo pega en la hoja    3.

2. que se inserten 2 a la derecha y 3 hacia abajo.

-  que pudiera yo elegir cuantas copias necesito para que se inserten.

3. las celdas seleccionadas si contienen formulas. y las utilizo introduciendo un numero o eligiendo de una lista.

4. si quisiera utilizar un userform, si es posible que sea visible en la hoja 3, o estoy atento a la recomendación, si es colocada en alguna hoja final el userform.

- dejo mi archivo original, por si lo necesita, ahi esta, la base de datos y  planillas originales.

le agradezco el tiempo y la ayuda.

No está tu archivo.

Envíame tu archivo para hacer el userform y probar con tu estructura de hojas.

Si tienes datos confidenciales reemplázalos por datos genéricos.

Mi correo:

[email protected]

Una disculpa, por el enlace, no importa los datos, son datos genéricos.

https://drive.google.com/file/d/1OdiogAQCecBS02VXrY-Mw5mPiTYDwSpV/view?usp=sharing 

Es el código para el formulario:

Option Explicit
'
Private Sub cmdEnviar_Click()
  Dim sRng As String, m
  Dim i As Long, j As Long
  Dim sh1 As Worksheet, sh3 As Worksheet
  If cbxPlantilla.ListIndex = -1 Then
    MsgBox "Selecciona una plantilla"
    cbxPlantilla.SetFocus
    Exit Sub
  End If
  If TextBox1 = "" Or Not IsNumeric(TextBox1) Then
    MsgBox "Captura el número de copias"
    TextBox1.SetFocus
    Exit Sub
  End If
  Select Case cbxPlantilla
    Case "Plantilla 1": sRng = "A1:BC56"
    Case "Plantilla 2": sRng = "BD1:DF56"
    Case "Plantilla 3": sRng = "A57:BC112"
    Case "Plantilla 4": sRng = "BD57:DF112"
  End Select
  Application.ScreenUpdating = False
  Set sh1 = Sheets("Hoja1")
  Set sh3 = Sheets("impresion")
  sh3.Cells.Clear
  sh3.DrawingObjects.Delete
  For i = 0 To WorksheetFunction.RoundUp(Val(TextBox1.Value) / 2, 0) - 1
    For j = 0 To 1
      sh1.Range(sRng).Copy sh3.Cells((56 * i) + 1, (55 * j) + 1)
    Next j
  Next i
  Application.ScreenUpdating = True
  MsgBox "Fin"
End Sub
'
Private Sub UserForm_Activate()
  CbxPlantilla. AddItem "Plantilla 1"
  CbxPlantilla. AddItem "Plantilla 2"
  CbxPlantilla. AddItem "Plantilla 3"
  CbxPlantilla. AddItem "Plantilla 4"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas