Sem a postagem do seu código seria impossivel saber o que estava acontecendo.
As variáveis W1, W2 e W3 estão definidas dentro de procedimentos, logo os valores atribuidos a elas só são visíveis dentro desses procedimentos.
Como você deve estar trabalhando sem definir a opção Option Explicit (que obriga a definição de variáveis) no topo do código quando vc utiliza txtSAcuMes = W1 + W2 + W3 o VB esta definindo uma segunda cópia dessas variáveis com valor zero.
Resumindo: Você tem as variaveis W1, W2 e W3 com valores dentro dos procedimentos e W1, W2 e W3 do lado de fora dos procedimentos com valor zero, é como se você tivesse uma cópia dessas variaveis porem com valores diferentes.
Solução:
1) Inclua a linha Option Explicit no topo do form ou módulo;
2) Mova a definição dessas variaveis para logo após a linha Option Explicit (remova-as de dentro dos procedimentos).
Sempre que as variaveis são definidas no topo do form/módulo elas são visiveis em todos os procedimentos/funções que estão no form/módulo em questão.
Ainda, se a variavel for definida como Public no topo de um módulo ela será visivel em qualquer procedimento/função de qualquer form/módulo.