Graças ao seu passo a passo, pude ver que você estava saindo do campo quantidade "direto" para o botão salvar. Assim o registro que você estava inserindo acabava por não ser registrado uma vez que ainda nem teve a oportunidade de ser salvo para ser calculado. Com isso, ao invés de o botão salvar contar com a boa vontade do valor ser calculado, o comando passa a ser o de "ir buscar o valor pelas orelhas".
'abrindo uma cópia do conjunto de registros do subformulário na memória do VBA em um objeto chamado "rs", ou melhor
'crio uma pasta de trabalho para um funcionário fiscal
- Código:
Set rs = Me!FRM_SERVICOS_SUB.Form.RecordsetClone
'se esse conjunto de registros contiver registros então, ou melhor
'se a pasta contiver papéis a serem avaliados então
- Código:
If rs.RecordCount > 0 Then
'zera o valor do total líquido para uma nova contagem
- Código:
Me!TOTAL_LIQUIDO.Value = 0
'movendo o ponteiro para o primeiro registro, ou melhor
'dizendo para o fiscal que ele comece do começo
- Código:
rs.MoveFirst
'dizendo para o fiscal fazer os comandos mais abaixo enquanto não chegar ao último registro
- Código:
While Not rs.EOF
'o total líquido deve ser o que o total líquido já tem mais o subtotal do registro que o fiscal tá olhando
- Código:
Me!TOTAL_LIQUIDO.Value = Me!TOTAL_LIQUIDO.Value + rs!subtotal_venda.Value
'mudando os olhos do "fiscal" para o próximo registro
- Código:
rs.MoveNext
'aqui acaba os comandos que o "fiscal" deve executar enquanto não chegar ao último registro
- Código:
Wend
'fim do ponto de condição pra saber se o conjunto de registros tem registro
- Código:
End If
'pra evitar que a empresa de "fiscais" tenha funcionários malucos, digo que chegando o fim do expediente então
'tranquem suas salas
- Código:
rs.Close
'e esqueçam o assunto
- Código:
Set rs = Nothing
Eu não costumo deixar meus usuários interagirem direto com subformulários que exibam listas, prefiro assim