¿Cómo copiar automáticamente un grupo de celdas en base al resultado de otra?

Estoy intentando copiar un grupo de filas y celdas si el usuario pone un numero de veces

Lo que pretendo es que según el numero de docentes que introduzca el usuario el recuadro que esta debajo se duplique tantas veces como número de docentes se indiquen, uno tras otro con una fila entre medias.

2 respuestas

Respuesta
1

Si la copia es en la misma hoja. Utiliza la siguiente macro. El resultado estará después de la fila 58.

Según tu imagen, supongo que en la celda "E38" vas a pone el número y el rango a copiar es "B40:J56"


Te anexo la macro

Sub Copiar_Recuadro()
'Por Dante Amor
    Set n = Range("E38")
    Set r = Range("B40:J56")
    If n.Value < 1 Then
        MsgBox "Captura un número de docentes"
        n.Select
        Exit Sub
    End If
    '
    fila = 58
    For i = 1 To n.Value
        r.Copy Cells(fila, "B")
        fila = fila + 18
    Next
    MsgBox "Recuadros copiados"
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

buenas tardes

muchas gracias por la macro, hace lo que mas o menos yo quería, el único problema es que si le pongo 2 docentes, el recuadro me lo incrementa en 2 y en realidad solo debería incrementarlo en 1, ya que el primero ya esta puesto, si me pudieses ayudar en esto te lo agradecería

perdona por ser tan preguntón, pero cada vez que ejecuto el libro tengo que ejecutar la macro, no lo hace de forma automática, habría alguna manera de hacer que se ejecute siempre que cambie el número de docentes, por si en principio me dicen que son 3 docentes y luego me lo cambian a 2 docentes que al poner el nuevo número de docente me elimine uno de los docentes

Para que sea en automático cada que cambias el número de docentes, pon la siguiente macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por Dante Amor
    Set n = Range("E38")
    If Not Intersect(Target, n) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Target.Value = "" Or Target.Value < 1 Or Not IsNumeric(Target.Value) Then
            Exit Sub
        End If
        Set r = Range("B40:J56")
        If n.Value < 1 Then
            MsgBox "Captura un número de docentes"
            n.Select
            Exit Sub
        End If
        fila = 58
        Rows(fila & ":" & Rows.Count).Clear
        If n.Value = 1 Then Exit Sub
        '
        For i = 2 To n.Value
            r.Copy Cells(fila, "B")
            fila = fila + 18
        Next
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

[sal u dos

¡Gracias!

Eres impresionante, si me surge alguna duda más y me pudieses ayudar te lo agradezco

Alguna pregunta más se me ocurrirá

Muchas gracias

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas