I tend to agree with Vlad, but if you really want to keep your design, there are other thing you can do.
The first thing is I would set the LOCKED and ENABLED properties for the "RecordCompleted" checkbox:
Code:
ENABLED = False
LOCKED = TRUE
This will keep anyone from manually changing the check box.
You can use the form afterupdate event as Vlad has suggested, but that usually updates the check box when the form is closing (or saved).
Another method is to write a sub to calc the number of true check boxes any time the value of a check box changes:
Code:
Private Sub CalcCheckBoxes()
'lets say you have 5 checkboxes
If Me.checkbox1 + Me.checkbox2 + Me.checkbox3 + Me.checkbox4 + Me.checkbox5 = -5 Then
Me.RecordCompleted = True
Else
Me.RecordCompleted = False
End If
End Sub
Then use the CLICK event of each check box to call the calc routine. Every time a check box changes value the "RecordCompleted" check box gets updated.
Code:
Private Sub Check1_Click()
Call CalcCheckBoxes
End Sub
Private Sub Check2_Click()
Call CalcCheckBoxes
End Sub
Private Sub Check3_Click()
Call CalcCheckBoxes
End Sub
--------------------------------------------------------------------------------
If you named the check boxes sequentially, Me.checkbox11, Me.checkbox2, Me.checkbox3, ... , you can change the code to use looping so you don't have to type so much.
The code would look something like
Code:
Private Sub CalcCheckBoxes()
'lets say you have 10 checkboxes
Const MaxChkBx As Integer = 10
Dim CkSum As Integer
For i = 1 To MaxChkBx
CkSum = CkSum + Me("checkbox" & i)
Next i
If Abs(CkSum) = MaxChkBx Then
Me.RecordCompleted = True
Else
Me.RecordCompleted = False
End If
End Sub
or
Code:
Private Sub CalcCheckBoxes()
'lets say you have 10 checkboxes
Const MaxChkBx As Integer = 10
Dim CkSum As Integer
For i = 1 To MaxChkBx
CkSum = CkSum + Me("checkbox" & i)
Next i
Me.RecordCompleted = (Abs(CkSum) = MaxChkBx)
End Sub