Looks good, but I think I'd put that behind a button click. So, user chooses a value in each combo, and rather than run the code on either of the 2 combos' AfterUpdate event (since you can't guarantee which one they'll choose from first), require a button click to calculate. That way, they can also refrain from calculating should they make the wrong choice in one or the other because they can change their entry. So assuming 1st combo is cmb1 and the other is cmb2 and the added button is named cmdCalculate:
Code:
Private Sub cmdCalculate_Click()
Dim ctl As Control
Dim strProd As String
If IsNull(Me.cmb1) Or IsNull(Me.cmb2) Then
msgbox "A value must be chosen from each list"
Exit Sub
End If
strProd = cmb1 & cmb2
For each ctl in Me.Controls
If ctl.Controltype = acCheckBox Then
If ctl.Name = "chk" & strProd Then
ctl.Value = True
ctl.Visible = True
Else
ctl.Value = False
ctl.Visible = False
End If
End If
Next ctl
End Sub
I had a bit to coerce the concatenated numeric values into a string (Cstr) just in case but I removed it - likely not necessary. Nor does that code ensure the combos don't contain an empty string, which shouldn't ever be needed. Also, I don't think this was covered, but the limit to list property should be true if using a value list.