Não consegui obter o reportado, mas segue as considerações:
A função Val funciona básicamente para conversão de valores inteiros, não reconhece virgula como decimal (sómente ponto);
assim se for utilizar valores decimais, e recomendado utilizar outra função (Cdbl,Cdec ou Ccur)
Como TextBox4 e o resultado, não deve ter um novo calculo no evento Change.
Altere suas rotinas conforme abaixo e teste (note que exclui a Sub TextBox4_Change()):
Private Sub TextBox2_Change()
TextBox4 = CalcTxt
End Sub
Private Sub TextBox3_Change()
TextBox4 = CalcTxt
End Sub
Private Function CalcTxt()
Dim Txt1 As Long, Txt2 As Long, Txt3 As Long
If TextBox1 <> "" Then Txt1 = CDec(TextBox1.Text)
If TextBox2 <> "" Then Txt2 = CDec(TextBox2.Text)
If TextBox3 <> "" Then Txt3 = CDec(TextBox3.Text)
CalcTxt = Txt1 - Txt2 - Txt3
End Function
Private Sub UserForm_Initialize()
Me.TextBox1.Value = ActiveWorkbook.Worksheets("Folha1").Range("A65536").End(xlUp).Value
End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 08/12/2017 4:59 pm