Una consideración previa. Para poder usar el código que te adjunto y guardar en el campo Total la suma de todos los subtotales de los registros previos (y el activo), los campos Subtotal y Total del formulario deben de estar basados en campos del mismo nombre en la tabla. Puedes modificar el código para que simplemente se muestre en un campo independiente del formulario el total que se calcule (sin guardarlo en tablas el dato), pero en ese caso debes de añadir código similar al que te adjunto asociado al evento abrir del formulario (al no estar guardado para presentarlo tienes que recalcularlo al abrir el formulario, al insertar un nuevo registro, al editar un registro previo ya existente...)
Private Sub Form_AfterInsert()
On Error GoTo Err_Form_AfterInsert
Dim misRegistros As Recordset, miTotal As Currency
Set misRegistros = Me.RecordsetClone
With misRegistros
If .EOF And .BOF Then
Exit Sub
Else
.MoveLast
.MoveFirst
Do Until .EOF
miValor = miValor + Nz(!Subtotal, 0)
.MoveNext
Loop
End If
.Close
End With
Me.Total = miValor
Exit_Form_AfterInsert:
Exit Sub
Err_Form_AfterInsert:
MsgBox Err.Description
Resume Exit_Form_AfterInsert
End Sub
Como te decía este código lo anexas al evento Después de insertar del subformulario Registros. Cada vez que insertes un registro nuevo calcula la suma de Subtotal de todos los registros (previos más actual) que están en el subformulario, y pone ese valor en el campo Total.
Cordiales saludos.