Sumar columnas MSFlexgrid en VB6.0

Recibe un cordial saludo por este medio, y nuevamente solicitando tu apoyo, te comento estoy tratando de sumar varias columnas de un msflexgrid pero a la vez deben de cumplir unas condiciones para que se sume su valor.

Mi msflexgrid se llama Flexgrid1 y tiene las siguiente columnas de las cuales ingreso los datos manualmente en las filas de las columnas Id hasta Total

Id Nombre Lun Mar Mie Jue Vie Sab Dom total Regla3x3 ExcRegla

1 ABC 1 2 3 2 8 6 2

2 SDF 2 1 2 4 9 5 4

3 EERT 4 3 3 2 12 9 3

4 HJK 2 2 2 2 2 10 5 6

5 uoiou 1 2 4 2 9 6 3

6 yiuyi 1 1 1 1 1 1 6 3 3

7 retw 4 4 4 4 16 9 7

La condición para que vaya sumando es no mas 3 horas diarias no mas de 3 veces a la semana para que la suma me la ponga en la columna regla3x3 por cada Id y el excedente iría en la columna excRegla.

Este es mi código y que no me da el resultado que yo deseo en la columna Regla3x3

Private Sub Command3_Click()
Dim conta As Double
Dim suma, suma2 As Double
Dim fila As Integer
Dim columna As Integer
For fila = 1 To FlexGrid1.Rows - 1
 FlexGrid1.Row = fila
 conta = 0
 suma = 0
 suma2 = 0
 'Recorremos las columnas
 For columna = 2 To 8
 FlexGrid1.Col = columna
 'Recorro las celdas viendo si tienen valor >0
 If Val(FlexGrid1.TextMatrix(fila, columna)) <= 0 Then
 Else
 conta = conta + 1
 End If
 If Val(FlexGrid1.TextMatrix(fila, columna)) > 3 Or conta > 3 Then
 Else
 MsgBox "suma1 " & suma
 suma = suma + Val(FlexGrid1.Text)
 End If
 If Val(FlexGrid1.TextMatrix(fila, columna)) <= 3 Or conta > 3 Then
 Else
 MsgBox "suma2 " & suma2
 suma2 = suma2 + Val(FlexGrid1.Text)
 End If
 Next columna
 FlexGrid1.TextMatrix(fila, 11) = suma + suma2
Next fila
End Sub

1 Respuesta

Respuesta
1

Mejor remíteme tu aplicativo ya que construir un piloto, se me hace pesado xD.

Mientras mas rapido lo hagas, mas rapido podre apoyarte.

He de imaginar que le problema que tienes es con relación a la fila nro, ¿5?

me corrijo, la fila 4, ya que (2+2+2) = 6

Bueno probé con los mismos datos que pusiste, y según entiendo (los resultados que deseas), si funciona.

Private Sub Command3_Click()
Dim conta As Double
Dim fila As Integer
Dim columna As Integer
Dim intPrueba As Integer
For fila = 1 To FlexGrid1.Rows - 1
 FlexGrid1.Row = fila
 conta = 0
 suma = 0
 suma2 = 0
 intPrueba = 0
 'Recorremos las columnas
 For columna = 2 To 8
 FlexGrid1.Col = columna
 'Recorro las celdas viendo si tienen valor >0
 If Val(FlexGrid1.TextMatrix(fila, columna)) > 0 Then conta = conta + 1
 If conta <= 3 Then
 If Val(FlexGrid1.TextMatrix(fila, columna)) <= 3 Then
 intPrueba = intPrueba + Val(FlexGrid1.TextMatrix(fila, columna))
 Else
 intPrueba = intPrueba + 3
 End If
 End If
 Next columna
 FlexGrid1.TextMatrix(fila, 11) = intPrueba
Next fila
End Sub

Así quedo el script, cópialo y pégalo en tu botón y comentas como te va.

Estimado Carlos, ya hice unas pruebas a parte de los datos que habia puesto y funciona de maravilla.

Te agradezco infinitamente tu ayuda

Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas