Boa dia.
Preciso de uma ajuda, tenho um formulário onde faço o registo diário dos testes, nesse formulário posso fazer até 8 registos e tenho um campo onde faz a media desde registo.
************************
Exemplo do que deveria fazer:
************************
FRot 1 = 7.5
FRot 2 = 5.5
FRot 3 = 2.9
FRot 4 = 3.9
FRot 5 = Null
FRot 6 = Null
FRot 7 = Null
FRot 8 = Null
Média= (7.5+5.5+2.9+3.9)/4 = 19.8/4 = 4.95
**********************
Código do que está a fazer
**********************
Private Sub C1_Click()
Dim I As Double
Dim f As Double
Dim Y
On Error Resume Next
I = Val(Nz(Me.FRot1, 0)) + Val(Nz(Me.FRot2, 0)) + Val(Nz(Me.FRot3, 0)) + Val(Nz(Me.FRot4, 0)) + Val(Nz(Me.FRot5, 0)) + Val(Nz(Me.FRot6, 0)) + Val(Nz(Me.FRot7, 0)) + Val(Nz(Me.FRot8, 0))
f = 0
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox And ctl.Name <> "C1" _
And ctl.Name = "FRot1" _
Or ctl.Name = "FRot2" _
Or ctl.Name = "FRot3" _
Or ctl.Name = "FRot4" _
Or ctl.Name = "FRot5" _
Or ctl.Name = "FRot6" _
Or ctl.Name = "FRot7" _
Or ctl.Name = "FRot8" Then
If Not IsNull(ctl.Value) And ctl.Value > 0 Then
f = f + 1
End If
End If
Next ctl
Y = (I / f)
Me.C1.Value = Round(Y, 1)
End Sub
o que esse código esta a fazer:
FRot 1 = 7.5
FRot 2 = 5.5
FRot 3 = 2.9
FRot 4 = 3.9
FRot 5 = Null
FRot 6 = Null
FRot 7 = Null
FRot 8 = Null
Média= (7+5+2+3)/4 = 17/4 = 4.25, ou seja só está a pegar a parte inteira do número.
Alguma sugestão?
Preciso de uma ajuda, tenho um formulário onde faço o registo diário dos testes, nesse formulário posso fazer até 8 registos e tenho um campo onde faz a media desde registo.
************************
Exemplo do que deveria fazer:
************************
FRot 1 = 7.5
FRot 2 = 5.5
FRot 3 = 2.9
FRot 4 = 3.9
FRot 5 = Null
FRot 6 = Null
FRot 7 = Null
FRot 8 = Null
Média= (7.5+5.5+2.9+3.9)/4 = 19.8/4 = 4.95
**********************
Código do que está a fazer
**********************
Private Sub C1_Click()
Dim I As Double
Dim f As Double
Dim Y
On Error Resume Next
I = Val(Nz(Me.FRot1, 0)) + Val(Nz(Me.FRot2, 0)) + Val(Nz(Me.FRot3, 0)) + Val(Nz(Me.FRot4, 0)) + Val(Nz(Me.FRot5, 0)) + Val(Nz(Me.FRot6, 0)) + Val(Nz(Me.FRot7, 0)) + Val(Nz(Me.FRot8, 0))
f = 0
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.ControlType = acTextBox And ctl.Name <> "C1" _
And ctl.Name = "FRot1" _
Or ctl.Name = "FRot2" _
Or ctl.Name = "FRot3" _
Or ctl.Name = "FRot4" _
Or ctl.Name = "FRot5" _
Or ctl.Name = "FRot6" _
Or ctl.Name = "FRot7" _
Or ctl.Name = "FRot8" Then
If Not IsNull(ctl.Value) And ctl.Value > 0 Then
f = f + 1
End If
End If
Next ctl
Y = (I / f)
Me.C1.Value = Round(Y, 1)
End Sub
o que esse código esta a fazer:
FRot 1 = 7.5
FRot 2 = 5.5
FRot 3 = 2.9
FRot 4 = 3.9
FRot 5 = Null
FRot 6 = Null
FRot 7 = Null
FRot 8 = Null
Média= (7+5+2+3)/4 = 17/4 = 4.25, ou seja só está a pegar a parte inteira do número.
Alguma sugestão?