Llamar macro, pero que funciones se ejecuten en otra hoja

Con mis pocos conocimientos que tengo y a manera de milagro... Pude realizar exactamente lo que necesito, el problema es que todo funciona perfecto pero en otra hoja, y si quiero aplicar lo mismo en la hoja que necesito pues falla.

La idea de todo esto es que pueda insertar números consecutivos de acuerdo a la cantidad de una celda "C1", los inserte y los desordene, a los números insertados que me copie hasta alcanzar la cantidad de 40 filas, es decir. En la celda C1 me pide formar 5 grupos, entonces copiaría 8 veces esos grupos ya desordenado.

En resumen todo esto para crear grupos de estudiantes con la cantidad que yo elija y aleatorio.

Adjunto el conjunto de macros que tuve que adaptar y crear para lograr lo que necesito con lo poco que se ...

(Es extenso debido a que estoy tomando en cuenta si quisiera formar solo 2 grupos.)

Sub consecu()

With Range("a1")
Range(.Range("a1"), .End(xlDown)).ClearContents
.Value = 1
.AutoFill .Resize(Range("C1")), xlFillSeries
End With
Range("a1", Range("a1").End(xlDown)).Select
Call desSeleccion
End Sub
Sub desSeleccion()
Dim Elem&, Temp&, i&
Dim Orden As New Collection
Application.ScreenUpdating = False
With Selection
Elem = .Rows.Count
On Error Resume Next
Do
Temp = Int(1 + Rnd * Elem)
Orden.Add Temp, CStr(Temp)
Loop Until Orden.Count = Elem
On Error GoTo 0
For i = 1 To Elem
.Range("A" & i) = Orden.Item(i) & "|" & .Range("A" & i)
Next i
.Sort .Range("a1"), xlAscending
For i = 1 To Elem
.Range("A" & i) = Mid(.Range("A" & i), 1 + InStr(1, .Range("A" & i), "|"))
Next i
End With
Range("a1", Range("a1").End(xlDown)).Copy
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
Call grupo2
Call grupo3
Call grupo4
Call grupo5
Call grupo6
Call grupo7
Call grupo8
Call grupo9
Call grupo10
Call grupo11
Call grupo12
Call grupo13
Call grupo14
Call grupo15
Call grupo16
Call grupo17
Call grupo18
Call grupo19
Application.ScreenUpdating = True
End Sub

Sub grupo2()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste

End Sub

Sub grupo3()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub

Sub grupo4()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub

Sub grupo5()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub

Sub grupo6()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo7()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo8()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo9()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo10()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo11()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo12()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo13()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo14()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo15()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo16()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo17()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo18()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Sub grupo19()
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste

End Sub

Aqui funciona bien (hoja temp.grupos)

Esta es la hoja en la que deberia funcionar (Grupos)

Muchas gracias a todos por su tiempo

2 respuestas

Respuesta
1

En primera es demasiado codigo para algo tan simple y esto se presta a que pueden surgir errores como el siguiente, tu codigo no funciona ni va a funcionar en la hoja que quieres simplemente por la referencia que estas usando en la macro usas a1 mientras que en la hoja en la que la quieres usar tus datos comienza en la celda A4 y para rematarla tienes una celda combinada lo cual provoca un error en la macro, en resumen cambia todas tus referencias en la macro que tenga a1 por a4

Este el resultado de hacer el cambio que mencione

Respuesta
1

Cual es la diferencia entre los códigos del procedimiento GrupoXX

Ya que en principio veo que son todos muy similares (por no decir iguales), por lo que podrías simplificar muchísimo ese código.

Aunque si es "solo" para formar grupos aleatorios, entonces podrías

1. Generar la columna de números aleatorios

2. Ordenar los alumnos en función de esta columna

3. Agrupar a los alumnos en función a la cantidad que digas...

4. Volver a ordenar los alumnos

Probablemente también requerirás un poco de código, pero mucho más sencillo

Salu2

¡Gracias! , si, despues de tantos dias sin poder resolver ese problema, lo hice asi de extenso con lo que sabia, es largo pero me funciona...

despues de todo lo pude solucionar ocultando el proceso despues de precionar el boton de la macro.

agradezco tu tiempo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas