I guess I should have posted the code on the command button:
Private Sub Command45_Click()
On Error GoTo Err_Command45_Click
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_Command45_Click:
'Sub CalculateFields()
'This Function Will Calculate a Group of Indexes, Not Just the Last
Dim Db As Database
Dim Rs As Recordset
Dim Fld1 As Field, Fld2 As Field, Fld3 As Field
Dim Fld4 As Field, Fld5 As Field, Fld6 As Field
Dim Fld7 As Field, Fld8 As Field, Fld9 As Field
Dim Fld10 As Field, Fld11 As Field, Fld12 As Field
Dim I As Long, NumRec As Long, PrevIndex As Long
Dim Prev10 As Long, Prev5 As Long, PrevOSC As Long, PrevCum As Long
Dim strErrorMessage As String
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("Select Count(*) From tblMcClelland")
NumRec = Rs(0)
Set Rs = Db.OpenRecordset("Select * From tblMcClelland Order By Index")
Set Fld1 = Rs!CUMADVDEC
Set Fld2 = Rs!DAY
Set Fld3 = Rs!USTK
Set Fld4 = Rs!DSTK
Set Fld5 = Rs!UVOL
Set Fld6 = Rs!DVOL
Set Fld7 = Rs!TRIN
Set Fld8 = Rs!Diff
Set Fld9 = Rs!TEN_PCT
Set Fld10 = Rs!FIVE_PCT
Set Fld11 = Rs!OSC
Set Fld12 = Rs!SUM
For I = 1 To NumRec
If IsNull(Fld3) Or IsNull(Fld4) Then
strErrorMessage = MsgBox("There must be advancing and declining stocks on "
& Fld2, vbOKOnly)
Set Rs = Nothing
Set Db = Nothing
Exit Sub
End If
'Only calculate data greater than 5000
If Rs.AbsolutePosition > 5000 Then
'Calculates all data
'If Rs.AbsolutePosition <> 0 Then
If IsNull(Fld7) Then
Rs.Edit
'CLng Conversion Rounds to the Nearest Even Number
Fld7 = (CLng(10000 * (Fld3 / Fld4) / (Fld5 / Fld6))) / 10000
Fld8 = Fld3 - Fld4
Fld1 = Fld8 + PrevCum
Fld9 = CInt(Prev10 + (0.1 * (Fld3 - Fld4 - Prev10)))
Fld10 = CInt(Prev5 + (0.05 * (Fld3 - Fld4 - Prev5)))
Fld11 = Fld9 - Fld10
Fld12 = Fld11 + PrevOSC
Rs.Update
End If
End If
Prev10 = Fld9
Prev5 = Fld10
PrevOSC = Fld12
PrevCum = Fld1
Rs.MoveNext
Next I
Set Rs = Nothing
Set Db = Nothing
'Exit Sub
Err_Command45_Click:
MsgBox Err.Description
Resume Exit_Command45_Click
End Sub