Devi togliere tutti quelli dove ti memorizzi i dati dell'ultimo record, negli altri dove fai delle somme, va bene come hai fatto. Non ti ho ripostato tutto il codice per non farti confusione ma, per esempio, anche questo è da variare.

codice:
    Set data5.Recordset = Db.OpenRecordset("select * from tassi_operazioni where datainizio_tasso <= #" & Format(datai, "mm/dd/yyyy") & "# order by datainizio_tasso ")
    'Do Until data5.Recordset.EOF
    If Not data5.EOF Then
        data5.MoveLast
        datainiziotasso = data5.Recordset!datainizio_tasso
        primotassodeb = data5.Recordset!primotassodebitore
        secondotassodeb = data5.Recordset!secondotassodebitore
        tassocreditore = data5.Recordset!tassocreditore
        primoscoperto = data5.Recordset!primo_scoperto
        secondoscoperto = data5.Recordset!secondo_scoperto
        spesechiusura = data5.Recordset!spesechiusura
        speseperoperazione = data5.Recordset!speseperoperazione
    End If
    'data5.Recordset.MoveNext
    'Loop
    data5.Recordset.Close
Ciao