domingo, 11 de abril de 2021

Creación Informes Excel Aplicación Deportes Parte 2

 Continuamos de la entrada anterior, ahora que ya tenemos realizado los combobox y los botones, seguiremos con el código vba para cada botón.

El botón de color naranja que llamamos btnAnaerobico posee el siguiente código:

Private Sub btnAnaerobico_Click()

With Hoja2 'donde están todos los articulos

    Dim filas, filas2, filasmax As Long

    Dim Anaerobico As String

    filasmax = .UsedRange.Rows.Count

    

    'recupendando dato del combo

    Anaerobico = cbo_Anaerobico.Value

    'MsgBox familia

    filas2 = 7 'la fila que empieza desde la hoja del reporte

    'pintando el titulo

    'Hoja5.Cells(3, 2) = familia

    'pintando registros

    For filas = 2 To filasmax 'recorremos todos los registros hoja2

        If .Cells(filas, 6) = Anaerobico Then

            .Cells(filas, 1).Copy Hoja5.Cells(filas2, 1) 'ID

            .Cells(filas, 2).Copy Hoja5.Cells(filas2, 2) 'FECHA

            .Cells(filas, 3).Copy Hoja5.Cells(filas2, 3) 'MES

            .Cells(filas, 4).Copy Hoja5.Cells(filas2, 4) 'AÑO

            .Cells(filas, 5).Copy Hoja5.Cells(filas2, 5) 'TIPO

            .Cells(filas, 6).Copy Hoja5.Cells(filas2, 6) 'MUSCULO

            .Cells(filas, 7).Copy Hoja5.Cells(filas2, 7) 'EJERCICIO

            .Cells(filas, 8).Copy Hoja5.Cells(filas2, 8) 'SERIES

            .Cells(filas, 9).Copy Hoja5.Cells(filas2, 9) 'REPETICIONES

            .Cells(filas, 10).Copy Hoja5.Cells(filas2, 10) 'SIN PESO

               filas2 = filas2 + 1

           End If

       Next filas

       'contar registros

      MsgBox "Reporte Creado"

    Hoja5.Select

    Dim cuenta As Long

    cuenta = Hoja5.UsedRange.Rows.Count

    'MsgBox cuenta

    Hoja5.Cells(4, 3) = cuenta - 6

End With

End Sub


Vamos a explicar este código para ello debemos tener en cuenta varias cosas:

1.- Que la Hoja2 es la hoja donde se encuentra la base de datos.

2.- Que la Hoja5 es la hoja donde vamos a imprimir el informe.

3.- La variable filasmax nos dará la última fila.

4.- En la variable Anaerobico guardaremos el valor elegido en el combobox.

5.- La variable filas2 la iniciamos con valor 7 que es la primera fila donde irá el primer registro del informe. Por supuesto esta variable irá creciendo en una unidad por cada registro encontrado.

6.- La variable filas, en un bucle for, iniciará en 2 hasta el valor de filasmax ya que recorrerá todos los registros de la base de datos para buscar el valor elegido en el combobox.

7.- Si vemos el condicional en la columna 6 de cada registro buscará el valor del combobox y cuando encuentre el primer valor irá copiando la fila entera en la hoja del informe, y al final el valor de filas2 crecerá una unidad hasta que encuentre todos los registros que coinciden.

8.- Una vez encontrados todos los registros, nos dirá Reporte Creado.

9.- En la variable cuenta nos contará todas las filas que posee el informe, a lo que habrá que restarle el valor de 6 para obtener el total de registros que ha encontrado.

En el caso del reporte de musculación pongo el código que es muy parecido al anterior, ya que hace lo mismo pero en otra hoja distinta.


Private Sub btnMusculacion_Click()

With Hoja2 'donde están todos los articulos

    Dim filas, filas2, filasmax As Long

    Dim Musculacion As String

    filasmax = .UsedRange.Rows.Count

    'recupendando dato del combo

    Musculacion = cbo_Musculacion.Value

    filas2 = 7 'la fila que empieza desde la hoja del reporte

    'pintando el titulo

      

    'pintando registros

    For filas = 2 To filasmax 'recorremos todos los registros hoja2

            If .Cells(filas, 6) = Musculacion Then

            .Cells(filas, 1).Copy Hoja6.Cells(filas2, 1) 'ID

            .Cells(filas, 2).Copy Hoja6.Cells(filas2, 2) 'FECHA

            .Cells(filas, 3).Copy Hoja6.Cells(filas2, 3) 'MES

            .Cells(filas, 4).Copy Hoja6.Cells(filas2, 4) 'AÑO

            .Cells(filas, 5).Copy Hoja6.Cells(filas2, 5) 'TIPO

            .Cells(filas, 6).Copy Hoja6.Cells(filas2, 6) 'MUSCULO

            .Cells(filas, 7).Copy Hoja6.Cells(filas2, 7) 'EJERCICIO

            .Cells(filas, 8).Copy Hoja6.Cells(filas2, 8) 'SERIES

            .Cells(filas, 9).Copy Hoja6.Cells(filas2, 9) 'REPETICIONES

            .Cells(filas, 10).Copy Hoja6.Cells(filas2, 10) 'SIN PESO

               filas2 = filas2 + 1

           End If

     Next filas

     MsgBox "Reporte Creado"

     'contar registros

    Hoja6.Select

    Dim cuenta As Long

    cuenta = Hoja6.UsedRange.Rows.Count

    'MsgBox cuenta

    Hoja6.Cells(4, 3) = cuenta - 6

   End With

End Sub


No hay comentarios:

Publicar un comentario

Gracias por participar en esta página.