If I understand your question correctly (and as with Chris I'm not sure that I do), you do know that a msgbox can return a value and you can use that value to close your form? For example, the first one returns a value, the second doesn't:
Dim l As Long
l = MsgBox("What do you want to do?", vbOKCancel)
If l = vbCancel Then
Unload UserForm1
Else
MsgBox "You selected 'OK'"
End If
You can use the return value (l) to tell the code that called the msgbox to unload the form.