Mejorar la programacion

3 envíos / 0 nuevos
Último envío
gerfried
Imagen de gerfried
Offline
última acción: Hace 2 meses 2 semanas
alta: 20/05/2018 - 19:01
Puntos: 70
Mejorar la programacion

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

AdjuntoTamaño
Binary Data modulo7.bas78.94 KB
Vyrtim
Imagen de Vyrtim
Offline
última acción: Hace 2 meses 6 días
Nivel 1 - 200 puntos
alta: 13/07/2016 - 09:18
Puntos: 270
Hola,¿qué diferencia hay

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,

gerfried
Imagen de gerfried
Offline
última acción: Hace 2 meses 2 semanas
alta: 20/05/2018 - 19:01
Puntos: 70
Buenas tardes, Gracias por

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.