Hola necesito una pequeña ayudita----
Resulta q tengo un msflexgrid y necesito saber o mejor dicho calcular el menor valor en una de las columnas para poder asociarlo a otros valores de la misma fila... (Tramo A-B por ejemplo).... tengo la idea con un for pero no me sirve a lo mejor lo estoy planteando mal
For i = 1 To msflexgrid1.rows -1
Dim s As Integer
s = i + 1
If Val(MSFlexGrid1.TextMatrix(i, 5)) < Val(MSFlexGrid1.TextMatrix(s, 5)) Then
Text2.Text = MSFlexGrid1.TextMatrix(i, 0) & " - " & MSFlexGrid1.TextMatrix(i, 1)
Else
Text2.Text = MSFlexGrid1.TextMatrix(s, 0) & " - " & MSFlexGrid1.TextMatrix(s, 1)
End If
'Next i
Espero me ayuden.. gracias de antemano
Podrias probar con esto...
Dim menor As Integer
dim iAux as Integer
menor = 65537 'este deberia ser el mayor valor posible
For i = 0 To msflexgrid1.rows - 1
iAux = Val(MSFlexGrid1.TextMatrix(i, 5))
If iAux < Val(MSFlexGrid1.TextMatrix(i+1, 5)) Then
menor = iAux
end if
Next i
Al finalizar el for, "menor" es el menor valor hallado en la flex.
Saludos!
Gracias por responder... MCKSys trate con lo que me dijiste y me dio un error de desbordamiento... entonces cambien la variable menor a Long
y ahora me tira Error 381 en tiempo de ejecucion el subindice esta fuera del intervalo..y me sale esta linea resaltada:
(http://img407.imageshack.us/img407/9167/asd1.th.png) (http://img407.imageshack.us/i/asd1.png/)
Usa un metodo de ordenamiento por ejemplo el de burbuja...
P.D.: todo esos if que se ven en ti imagen seguro pueden reducirse con And
MM no estoy familiarizado con el ordenamiento de burbuja... lei algo pero no lo entiendo muy bien.. podrias darme algun ejemplo¿
unos post mas abajito esta el metodo se lo postee a wsh o wsk a no recuerdo su nombre ya te lo pongo ok.
Edito:
Public Enum EnuListOrder
AcendetOrder = 0
DecendentOrder = 1
End Enum
Public Sub Sorted(ByRef Item() As String, Optional Order As EnuListOrder = DecendentOrder)
Dim Itm As String
Dim J As Double
Dim i As Double
Dim mcount As Long
mcount = UBound(Item)
If Order = AcendetOrder Then
For J = 0 To mcount
For i = 0 To mcount
If Item(i) > Item(i + 1) Then
Itm = Item(i + 1)
Item(i + 1) = Item(i)
Item(i) = Itm
End If
Next i
Next J
Else
For J = 0 To mcount - 2
For i = 0 To mcount - 2
If Item(i) < Item(i + 1) Then
Itm = Item(i + 1)
Item(i + 1) = Item(i)
Item(i) = Itm
End If
Next i
Next J
End If
End Sub
Dulces Lunas!¡.
Hola, con recorrer el flexgrid te alcanza, pero debes recorrerlo bien, el ejempo anterior esta mal porque al recorrer la grilla le suma 1 a la fila actual y cuando llega a la ultima y le suma 1 ...pues esa fila no existe y tira error, lo correcto es ir guardando en una variable temporal los valores y asi compararlos, pero tambien podes guardarlos en un array y despues ordenarlo con el metodo que quieras y listo.
saludos.