Para que a soma seja efetuada em qq situação é preciso que sejam tratados todos os txtbox que compõem a soma.
Então em cada textbox (pode ser em um dos eventos : after_update,before_update,exit,change) é preciso chamar a rotina Calculo
Assim é possivel utilizar (uma possibilidade):
Sub Calculo()
Dim Valor As Double
If TextBox1.Text = "" Then
txt1 = 0
Else
txt1 = CDec(TextBox1.Text)
End If
If TextBox2.Text = "" Then
txt2 = 0
Else
txt2 = CDec(TextBox2.Text)
End If
If TextBox3.Text = "" Then
txt3 = 0
Else
txt3 = CDec(TextBox3.Text)
End If
If TextBox4.Text = "" Then
txt4 = 0
Else
txt4 = CDec(TextBox4.Text)
End If
If TextBox5.Text = "" Then
txt5 = 0
Else
txt5 = CDec(TextBox5.Text)
End If
If TextBox6.Text = "" Then
txt6 = 0
Else
txt6 = CDec(TextBox6.Text)
End If
Valor = 0
Valor = txt1 + txt2 + txt3 + txt4 + txt5 + txt6
TextBoxTotal.Text = Format(Valor, "R$ #.00")
End Sub
Ainda Supondo que suas texbox sejam numeradas sequenciais (TextBox1...2...3...etc)
é possivel simplificar:
Sub Calculo()
Dim Valor As Double
Valor = 0
'Para cada controle no formulario
For Each c In Controls
'Verifica se o controle e TextBox (descarta label/frame/botoes etc..)
If TypeName(c) = "TextBox" Then
'Descarta se for o txt do total e dados não numericos
If c.Name <> "textTOTAL" And IsNumeric(c.Text) Then
'Verifica se o digito numerico está dentro do "range" desejado(nesse exemplo somente somará textbox de final menor do que 7)
If Right(c.Name, 1) < 7 Then
Valor = Valor + CDbl(c.Text)
End If
End If
End If
Next
textTOTAL.Text = Format(Valor, "R$ #.00")
End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 16/01/2013 6:13 am