Bom vamos a uma aula simples, alguns colegas costumam cometer esse erro ou seja, costumam usar o VAL para calculos, o que é um erro, porque?
o VAL retorna valores numericos dentro de uma varival ou texto, porém se hoverem valores alfanumericos, "abcdef,.:><" o val irá retornar apenas os primeiros valores numéricos.
exemplo
se vc tiver o seguinte valor em um texto "10 de agosto de 2011"
o Val irá retornar apenas o valor 10 ou seja:
Val("10 de agosto de 2011") = 10
se vc tiver espaços em uma variavel seria isso
Val("1 957 36") = 195736
agora
Val("1,36") = 1
porém se vc usar
Val("1.36") = 1,36
então para eveitar este tipo de situação o ideal é vc usar CDbl (convert to Double)
ou usar CInt( Convert to Integer )
valores de double= 1,3; 1,78; 9,78
valores de Integer = 1; 2; 3; 4; 100; 158
resumindo para seu código o ideal seria
eng = CDbl(Text1.Text) * 105 * CDbl(Text4.Text) * CDbl(Text5.Text) + CDbl(Text6.Text)
sup = CDbl(Text2.Text) * 70 * CDbl(Text4.Text) * CDbl(Text5.Text) + CDbl(Text6.Text)
mec = CDbl(Text3.Text) * 40 * CDbl(Text4.Text) * CDbl(Text5.Text) + CDbl(Text6.Text)
Text12.Text = CDbl(Text1.Text) + CDbl(Text2.Text) + CDbl(Text3.Text)
e boa sorte