|
Postada em 26/06/2008 10:09 hs
Bom dia pessoal! Estou tentando criar um temporizador...
De maneira que em um formulário, eu possuo um flexgrid e um label! Na medida que eu lançar ou subtrair valores nos campos dos grids ele já some e atualize constantemente no label!
Fiz um código parecido com isso e usei um TIMER... só que não está dando certo, pois ele lê todos os valores e soma... mas ele está me jogando um resultado negativo no label e também os valores ocilam na medida em que eu clico em certos campos do grid.
Segue o código!
Private Sub Timer2_Timer() Dim tot As Double
If Grid.Cols > 1 Then
For L = 1 To Grid.Rows - 1 For C = 1 To Grid.Cols - 1
With Grid tot = CDbl(tot + (.TextMatrix(L, C) = .Text)) End With
Next C Next L
Else End If lblTotal.Caption = tot tot = 0 End Sub
OBS: O intervalor do TIMER está como 1 miless...
Alberto
"Em tijolo em tijolo a casa sai!" Autor: Eu mesmo.
|
TÓPICO EDITADO
|
|
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
Postada em 26/06/2008 10:23 hs
É mais fácil você criar uma sub para isto ex: Sub Soma() With Grid For L = 1 To Grid.Rows - 1 For C = 1 To Grid.Cols - 1 With Grid tot = CDbl(tot + (.TextMatrix(L, C) = .Text)) End With Next C Next L LblTotal.Caption=tot end sub como usar, chame esta sub ao se dar o enter, na flexgrid ex: ...Select Case KeyAscii Case vbKeyReturn, vbKeyTab 'move para a proxima celula. Soma ' chama a sub que foi criada With Grid....
|
|
|
|
Postada em 26/06/2008 10:35 hs
Tudo bom querido Marcelo...hauahauh... mesmo fazendo da forma como vc sugeriu... continuou a dar o mesmo erro.. ele começa a contar negativamente... muito loco o negócio!
Alberto
"Em tijolo em tijolo a casa sai!" Autor: Eu mesmo.
|
|
|
|
Postada em 26/06/2008 10:39 hs
Eu não sei porque, mas acho que o erro ta aqui!
tot = CDbl(tot + (.TextMatrix(L, C) = .TEXT))
mais expecificamente no ultimo argumento .TEXT
Alberto
"Em tijolo em tijolo a casa sai!" Autor: Eu mesmo.
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 26/06/2008 10:50 hs
Desculpe faça assim Sub Soma() Dim Tot As Double With Grid For L = 1 To .Rows - 1 For C = 2 To .Cols - 1 If .TextMatrix(L, C) <> "" Then Tot = Tot + .TextMatrix(L, C) End If Next C Next L End With lbltotal.Caption = Tot End Sub
coloque na seguinte posição : Private Sub Grid_KeyPress(KeyAscii As Integer) If Grid.Col > 1 Then On Error Resume Next With Grid If KeyAscii = 13 Or KeyAscii = 9 Then Soma ' <--- chame aqui a função .Col = .Col + 1 KeyAscii = 0 ElseIf KeyAscii = 8 Then .Text = Left(.Text, Len(.Text) - 1) KeyAscii = 0 End If ... Obs. agora se chamar no timer também funcionará Private Sub Timer2_Timer() Soma End Sub
|
|
|
|
Postada em 26/06/2008 10:55 hs
aíiiiiiiiii sim ein.... agora foi...
Obrigado + 1 vez...
Quando eu terminar uns ajustes aqui.. eu mando pra vc!!!
Abraços!
Alberto
"Em tijolo em tijolo a casa sai!" Autor: Eu mesmo.
|
|
|