Notifications
Clear all

Soma Coluna de Resultado

8 Posts
3 Usuários
0 Reactions
1,365 Visualizações
(@radao)
Posts: 0
New Member
Topic starter
 

Boa Noite,
Tenho a seguinte dificuldade para fazer uma soma automática em VBA

Tenho 10 campos de resultados que podem ter todos valores ou apenas 1.
Esse resultado é obtido pelo calculo Quant01 x VlrUnit01 = VlrTot01
Esse resultado é obtido pelo calculo Quant02 x VlrUnit02 = VlrTot02
Esse resultado é obtido pelo calculo Quant03 x VlrUnit03 = VlrTot03
" " "
Esse resultado é obtido pelo calculo Quant10 x VlrUnit10 = VlrTot10, isso eu tenho em 10 linhhas e gostaria de fazer a soma automática dos VlrTot, ou seja, somar automaticamente os totais de cada item

 
Postado : 18/11/2014 4:19 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Radao, tenha em mente que você sabe o que são Quant01 x VlrUnit01, mas nós não fazemos a minima idéia, o ideal seria postar um modelo, ou dar as referencias das celulas que se referem estes campos, ou de repente estes campos não são nem ranges, podendo ser TextBoxs ou outro tipo de controle em algum formulário, fica dificil orientar assim.

Mas seguindo uma lógica matemática, deveria de ser algo do tipo :

VlrTot = VlrTot01 + VlrTot02 + VlrTot03

Poste um modelo, ficará mais fácil ajudar.

[]s

 
Postado : 18/11/2014 4:30 pm
(@radao)
Posts: 0
New Member
Topic starter
 

O meu problema esta no frmorcamento onde faço os cálculos individuais de cada item, porem não estou conseguindo fazer o somatório total

 
Postado : 18/11/2014 5:15 pm
(@radao)
Posts: 0
New Member
Topic starter
 

Caso tenha alguma sugestão para que eu possa melhorar algo, fique a vontade opara fazer seu comentários

 
Postado : 18/11/2014 5:17 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Radao, aproveitando a dica e a rotina do colega Reinaldo no tópico abaixo:
ERRO NA MACRO DE AUTO SOMA EM TEXTBOXES
viewtopic.php?f=10&t=6756

Fiz uns ajustes, então faça o seguinte:
Acrescente a rotina abaixo em seu Formulário de nome "frmCadastroOrçamento" não encontrei o "frmorcamento"

Sub CalculoReinaldo()
    Dim Valor As Double
    Dim c
    Dim aN
    
    Valor = 0
    
    aN = 1
    
    For Each c In Controls
        
        If TypeName(c) = "TextBox" Then
            
            
            If c.Name = "txtVlrTot" & "0" & aN And IsNumeric(c.Text) Then
                    Valor = Valor + CDbl(c.Text)
                aN = aN + 1
            End If
            
        End If
    Next
    
    txtVlrTotGeral.Text = Format(Valor, "R$ #.00")
    
End Sub

Depois, de dois cliques em cada Textbox que tem os nomes "txtVlrTot01"..02..03 e adicione a chamada a macro:
Call CalculoReinaldo
Deverão ficar assim :

Private Sub txtVlrTot01_Change()
    Call CalculoReinaldo
End Sub

Private Sub txtVlrTot02_Change()
    Call CalculoReinaldo
End Sub

Private Sub txtVlrTot03_Change()
    Call CalculoReinaldo
End Sub

Private Sub txtVlrTot04_Change()
    Call CalculoReinaldo
End Sub

Faça isto em todos os 10.

Faça os testes e veja se é isto.

[]s

 
Postado : 18/11/2014 6:16 pm
(@radao)
Posts: 0
New Member
Topic starter
 

OK.
Vou tentar. O nome certo é frmCadastroOrcamento

 
Postado : 18/11/2014 6:30 pm
(@radao)
Posts: 0
New Member
Topic starter
 

Boa Noite Reinaldo,
No txtVlrTotGeral esta aparecendo apenas R$ 0,00. Não esta somando

 
Postado : 18/11/2014 8:51 pm
(@rlm)
Posts: 0
New Member
 

A rotina de calculo está com erro
o nomo do controle está errado e falta incremento da variavel aN

Private Sub TotalGeral()
Dim Valor As Double
Dim c As Control
Dim aN   
Valor = 0
aN = 1
For Each c In Controls
    If TypeName(c) = "TextBox" Then
        If c.Name = "txtVlrTot" & "0" & aN And IsNumeric(c.Text) Then
            Valor = Valor + CDbl(c.Text)
        aN = aN + 1
        End If
    End If
Next
    txtVlrTotGeral.Text = Format(Valor, "R$ #,##0.00")
End Sub

Porem no seu modelo, como há muitos controles prefeiro utilizar conforme rotina abaixo:

Private Sub TotalGeral1()
Dim Tot1 As Double, Tot2 As Double, Tot3 As Double
Dim Tot4 As Double, Tot5 As Double, Tot6 As Double
Dim Tot7 As Double, Tot8 As Double, Tot9 As Double, Tot10 As Double
Dim Valor As Double
Valor = 0
'Compatibilização de valores
If txtVlrTot01 = "" Then
    Tot1 = 0
Else
    Tot1 = txtVlrTot01
End If
If txtVlrTot02 = "" Then
    Tot2 = 0
Else
    Tot2 = txtVlrTot02
End If
If txtVlrTot03 = "" Then
    Tot3 = 0
Else
    Tot3 = txtVlrTot03
End If
If txtVlrTot04 = "" Then
    Tot4 = 0
Else
    Tot4 = txtVlrTot04
End If
If txtVlrTot05 = "" Then
    Tot5 = 0
Else
    Tot5 = txtVlrTot05
End If
If txtVlrTot06 = "" Then
    Tot6 = 0
Else
    Tot6 = txtVlrTot06
End If
If txtVlrTot07 = "" Then
    Tot7 = 0
Else
    Tot7 = txtVlrTot07
End If
If txtVlrTot08 = "" Then
    Tot8 = 0
Else
    Tot8 = txtVlrTot08
End If
If txtVlrTot09 = "" Then
    Tot9 = 0
Else
    Tot9 = txtVlrTot09
End If
If txtVlrTot10 = "" Then
    Tot10 = 0
Else
    Tot10 = txtVlrTot10
End If

Valor = Tot1 + Tot2 + Tot3 + Tot4 + Tot5 + Tot6 + Tot7 + Tot8 + Tot9 + Tot10
    
txtVlrTotGeral.Text = Format(Valor, "R$ #,##0.00")
End Sub

Veja em seu arquivo

 
Postado : 19/11/2014 9:05 am