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.