Buenos dias,
Soy muy principiente en la programacion en VBA, he diseñado unas macro para un programita de notas para un colegio, me gustaria saber si hay alguna forma de mejorar la macro que he diseñado ya sea simplificandola o reduciendo los pasos para que el proceso sea mas rapido y eficiente, asi mismo incluir todas las macros (CHECK_H1_1T; CHECK_H2_1T, CHECK_H3_1T..... hasta CHECK_H9_1T) en una sola y asi con las demas, envio adjunto el modulo donde estan todas las macro que deseo simplificar y unir y asi puedan tener una mejor idea.
Gracias
Adjunto | Tamaño |
---|---|
modulo7.bas | 78.94 KB |
Hola,
¿qué diferencia hay entre CHECK_H1_1T, CHECK_H2_1T, CHECK_H3_1T, etc...? A simple vista parece que hagan exactamente lo mismo. ¿Puedes dar alguna explicación más?
Disculpa, pero no acabo de entender lo que hace la macro más allá de copiar y pegar datos de un sitio a otro. Así, a bote pronto... veo que seleccionas continuamente los rangos que vas a copiar / pegar, ¿para qué? No es necesario. Copialos y pegalos directamente, y esas líneas que te ahorras.
Un saludo,
Buenas tardes, Gracias por responder tan pronto.
Bueno, voy a ser un poco más específico, para que me puedas ayudar.
La macro que menciono, solo copia y pega, eso es claro, lo que sucede es que tengo 9 hojas de Excel cada una con la misma configuración ya que el programa es sobre registro de notas en un colegio, cada hoja de Excel es un curso con un número determinado de estudiantes, la macro CHECK_H1_1T corresponde únicamente a los datos de la hoja 1 en el primer periodo académico, la CHECK_H2_1T, será lo mismo pero para la hoja dos y así sucesivamente hasta la hoja nueve, la macro me funciona muy bien pero quisiera buscar la manera de simplificarla ya que deseo poner solo un botón que realice todo, lo que sucede es que la orden de copiar y pegar se realiza en un rango de datos especifico para cada hoja, por ejemplo
Sheets(1).Select
Range("E21:S70").Select
Selection.Copy
Sheets("BASE CHECKPOINT").Select
Range("C11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets(1).Select
Range("V21:V70").Select
Selection.Copy
Sheets("BASE CHECKPOINT").Select
Range("R11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Esto mismo lo necesito para la hoja numero 2 y luego la 3 hasta la nueve, solo que no encuentro la manera de que mediante un bucle o alguna programación mas avanzada me realice el proceso sin tener que asignarle a la misma macro otro nombre y cambiar el numero de la hoja, yo deseo que en una sola macro esta me copie y pegue los datos de cada hoja en (“BASE CHECKPOINT”) en los respectivos rangos, ya que el rango (E21:S70) de la hoja 1 debe pegarce unicamente en el rango (c11) de la hoja BASE CHECKPOINT, mientras que el rango (E21:S70) de la hoja 2, se debe pegar unicamente en el rango (c70) de la hoja BASE CHECKPOINT.
Es decir, los datos que se copian están el mismo rango pero en diferentes hojas, mientras que al pegar los datos estos van a la misma hoja (BASE CHECKPOINT), pero en diferentes celdas.