Ver Mensaje Individual
  #16 (permalink)  
Antiguo 29/11/2009, 17:20
Avatar de erbuson
erbuson
 
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 6 meses
Puntos: 53
Respuesta: Calcular ganancias por Mes

Hola:

Este problema se produce porque en tu código muestras el mensaje por cada lectura, deberías utilizar un indicar para saber si encontraste registros o no a fin mostrar el mensaje si es necesario.

Te copio tu código y te modifico como lo haría yo.

Código:
Private Sub Command5_Click()
On Error GoTo Errores
For i = 1 To MSFlexGrid1.Rows - 1
If Year(MSFlexGrid1.TextMatrix(i, 6)) = Combo1 Then
Mes = Month(MSFlexGrid1.TextMatrix(i, 6))
Mensuales(Mes) = Mensuales(Mes) + MSFlexGrid1.TextMatrix(i, 9)
Text2(Mes) = Mensuales(Mes)
HalladoAlguno = True  ' Aunque sólo se halle 1 esta variable sera True
end if
Next i
if Not HalladoAlguno then MsgBox "No hay registros para el período seleccionado"

Exit Sub
Errores:
MsgBox "Se ha producido error al procesar la fecha " & MSFlexGrid1.TextMatrix(i, 6)
End Sub
Respecto a lo que te comentaba de cargar en el Combo sólo los años que tengan valor, puedes crear la siguiente rutina que es ademas reutilizable para cualquier combo:

Código:
' Si se cree oportuno, definir estas 2 propiedades en el combo así
' Style = 2 'DropDown List   ' Para forzar a elegir un elemento de la lista
' Sorted = True              ' Para que salgan Ordenados los Items
Private Sub ComboAdd(Combo As ComboBox, Dato As String)
  ' Añade Dato al Combo si ya no está en el
  Dim Item As Integer
  For Item = 0 To Combo.ListCount - 1
    If Combo.List(Item) = Dato Then Exit Sub
  Next
  Combo.AddItem Dato
End Sub
Previamente en un bucle puedes poner asi de facil en el combo los años que encontrarás en el Grid

For i = 1 To MSFlexGrid1.Rows - 1
ComboAdd Combo1, str$(Year(MSFlexGrid1.TextMatrix(i, 6)))
Next

Cualquier duda me comentas y por cierto gracias por tus halagos, pero personalmente pienso que en esto de la programación como en muchas otras cosas lo importante es que te guste lo que estás haciendo.

Saludos