I agree with snb that dynamically created controls are problematic, but if you create a control you can use the .Parent property to get it's container, which might be a user form, a Frame or a Page from a multipage control.
Another way would be to use a (multi-select) ListBox with .ListStyle set to fmListStyleOption. Each dynamic checkbox could be a list item in such a listbox.
This routine will return the user form object in which a control resides (not just the Frame/Page container).
Function ParentUF(ctrl As MSForms.Control) As Object
Set ParentUF = ctrl
On Error Resume Next
Do
Set ParentUF = ParentUF.Parent
Loop Until Err
On Error GoTo 0
End Function