Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Irenko

Marcando TextBox

Recommended Posts

Tenho 04 Text array, em cada um digito um valor diferente sendo:

 

1,25 - 2,44 - 0,44 - 3,36

 

como faço para alterar a propriedade BackColor do text que esta com o valor menor, ou seja, 0,44?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Irenko.

 

Veja se o código abaixo te ajuda:

Private Sub Command1_Click()
Dim iText As Integer
Dim dbText As Double

dbText = CVar(Text1(0).Text)

For i = 0 To 3
	If CVar(Text1(i).Text) < dbText Then
		dbText = CVar(Text1(i).Text)
		iText = i
	End If
Next

Text1(iText).BackColor = vbRed

End Sub

Se caso houver valores repetidos, do jeito que está, ele pintará somente a que recebeu primeiro o menos valor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio, é praticamente isso! Veja bem tem outra dúvida. Suponhamos que eu gere uma fila de 04 textbox um em baixo do outro, cada fila de 04 txtbox para um produto, ou seja:

 

Produto1 - Text1 - Text1 - Text1 - Text1

Produto2 - Text1 - Text1 - Text1 - Text1

Produto3 - Text1 - Text1 - Text1 - Text1

Produto4 - Text1 - Text1 - Text1 - Text1

 

esses todos array, ai digito os valores para cada produto correspondente aos 04 text. O problema é marcar separadamente o valor menor de cada produto, não sei se fui claro, é possivel?

 

Bom estou tentando colorir a celula dos menores valores de um FlexGrid, esta dando erro (Type Mismatch) na linha marcada abaixo. Com o MsgBox funciona, mas como colorir a celula?

 

Private Sub Command1_Click()

Dim i As Integer

Dim dMenor As Double

 

For J = 1 To Me.Grid.Rows - 2

For i = 1 To 4

If Me.Grid.TextMatrix(J, i + 1) <> "" Then

If CDbl(Me.Grid.TextMatrix(J, i)) < CDbl(Me.Grid.TextMatrix(J, i + 1)) Then

If dMenor = 0 Then

dMenor = Me.Grid.TextMatrix(J, i)

Else

If CDbl(Me.Grid.TextMatrix(J, i)) < dMenor Then

dMenor = Me.Grid.TextMatrix(J, i)

End If

End If

Else

If dMenor = 0 Then

dMenor = Me.Grid.TextMatrix(J, i + 1)

Else

If CDbl(Me.Grid.TextMatrix(J, i + 1)) < dMenor Then

dMenor = Me.Grid.TextMatrix(J, i + 1)

End If

End If

End If

End If

Next i

'MsgBox MeGrid.TextMatrix(J, 0) & " = " & dMenor

 

If Me.Grid.TextMatrix(J, 0) = dMenor Then ====> erro aqui!!!!

Me.Grid.CellForeColor = vbRed

dMenor = 0

End If

Next J

End Sub

 

Private Sub Form_Load()

Me.Grid.FormatString = "codigo |loja1 |loja2 |loja3 |loja4 |"

'For i = 1 To 3

Me.Grid.AddItem "PROD 1" & Chr(9) & 10 & Chr(9) & 6 & Chr(9) & 4 & Chr(9) & 14, Me.Grid.Rows - 1

Me.Grid.AddItem "PROD 2" & Chr(9) & 2 & Chr(9) & 6 & Chr(9) & 4 & Chr(9) & 14, Me.Grid.Rows - 1

Me.Grid.AddItem "PROD 3" & Chr(9) & 7 & Chr(9) & 25 & Chr(9) & 8 & Chr(9) & 23, Me.Grid.Rows - 1

'Next i

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto a sua primeira dúvida, acho que uma possível solução é você utilizar nomes diferentes das texts para produtos diferentes.

 

Ou então, se sua matriz 4x4 for fixa, você pode fazer quatro for next, sendo um de 0 a 3, outro de 4 a 7, 8 a 11 e 12 a 15.

Entendeu?

 

E quanto ao erro, note que todas as outras vezes você converteu o valor da célula para Double, menos nessa que está dando o erro. Tente colocar o Cdbl nessa também e diga se o erro persiste...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.