CALCULO NO LOOP
Private Sub Calcula()
Dim TBarray1(1 To 8) As MSForms.Control
Dim TBarray2(1 To 2) As MSForms.Control
Dim nTotalMais As Long
Dim nTotalMenos As Integer
Dim i As Integer, j As Integer
Set TBarray1(1) = TxtValor: Set TBarray1(2) = TxtIPTU
Set TBarray1(3) = TxtAgua: Set TBarray1(4) = TxtLuz
Set TBarray1(5) = TxtCond: Set TBarray1(6) = TxtSeg
Set TBarray1(7) = TxtOutros: Set TBarray1(8) = TxtMulta
Set TBarray2(1) = TxtDesconto: Set TBarray2(2) = TxtIR
i = 0
j = 0
For i = 1 To 8
nTotalMais = nTotalMais + Val(TBarray1(i).text)
Next i
TxtTotal.text = Format(nTotalMais, [Ô]#,##0.00[Ô])
End Sub
Pessoal, estou com um bug na rotina acima.
tenho 08 TextBox no meu UserForm que estou tentando fazer uma soma com o codigo acima. No TBarray1(1) = TxtValor tenho 5.694,78 o qual somo com os outros 07 TextBox, só que o resultado no TxtTotal esta dando 6 com Long e 5,69 com Single, alguem pode me dizer onde estou errando?
Tenho mais um problema, como pode ver acima tenho mais dois TextBox setados como: Set TBarray2(1) = TxtDesconto: Set TBarray2(2) = TxtIR
Os valores do mesmo tenho que somar e depois subtrair do total, pergunto, teria como fazer isso em um so FOR?
Dim TBarray1(1 To 8) As MSForms.Control
Dim TBarray2(1 To 2) As MSForms.Control
Dim nTotalMais As Long
Dim nTotalMenos As Integer
Dim i As Integer, j As Integer
Set TBarray1(1) = TxtValor: Set TBarray1(2) = TxtIPTU
Set TBarray1(3) = TxtAgua: Set TBarray1(4) = TxtLuz
Set TBarray1(5) = TxtCond: Set TBarray1(6) = TxtSeg
Set TBarray1(7) = TxtOutros: Set TBarray1(8) = TxtMulta
Set TBarray2(1) = TxtDesconto: Set TBarray2(2) = TxtIR
i = 0
j = 0
For i = 1 To 8
nTotalMais = nTotalMais + Val(TBarray1(i).text)
Next i
TxtTotal.text = Format(nTotalMais, [Ô]#,##0.00[Ô])
End Sub
Pessoal, estou com um bug na rotina acima.
tenho 08 TextBox no meu UserForm que estou tentando fazer uma soma com o codigo acima. No TBarray1(1) = TxtValor tenho 5.694,78 o qual somo com os outros 07 TextBox, só que o resultado no TxtTotal esta dando 6 com Long e 5,69 com Single, alguem pode me dizer onde estou errando?
Tenho mais um problema, como pode ver acima tenho mais dois TextBox setados como: Set TBarray2(1) = TxtDesconto: Set TBarray2(2) = TxtIR
Os valores do mesmo tenho que somar e depois subtrair do total, pergunto, teria como fazer isso em um so FOR?
Acho que a função de conversão [Ô]Val[Ô] é que está causando toda a confusão. Por isso, faça assim:
For i = 1 To 8
nTotalMais = nTotalMais + CDbl(TBarray1(i).text)
Next i
ou assim:
For i = 1 To 8
nTotalMais = nTotalMais + CLng(TBarray1(i).text)
Next i
Para resolver o seu segundo problema, tente assim:
Seu nTotalMenos está como inteiro, então ele fará um arredondamento também. Corrija isso aÃ.
nTotalMenos = Val(nTotalMais - (Val(TBarray2(1)) + Val(TBarray2(2))))
For i = 1 To 8
nTotalMais = nTotalMais + CDbl(TBarray1(i).text)
Next i
ou assim:
For i = 1 To 8
nTotalMais = nTotalMais + CLng(TBarray1(i).text)
Next i
Para resolver o seu segundo problema, tente assim:
Seu nTotalMenos está como inteiro, então ele fará um arredondamento também. Corrija isso aÃ.
nTotalMenos = Val(nTotalMais - (Val(TBarray2(1)) + Val(TBarray2(2))))
Tópico encerrado , respostas não são mais permitidas