You may find that you want to know something about the form that contains the control you wish to use. You could do this by passing a reference to the form, but that will get messy if you are nested 5 levels deep in procedures. A cleaner solution is to use the Container property to get the form. Of course, a control may be contained by other controls. The solution is to walk the chain of containers until you reach the form.
Public Function GetForm(ctr As Control) As Object Set GetForm = ctr.Container Do Until TypeOf GetForm Is Form Set GetForm = GetForm.Container LoopEnd Function
Now, since this function returns an object, you should cast it back to a form for better performance. This is shown below using a control array of nested pictureboxes:
Private Sub picNested_Click(Index As Integer) Dim frm As Form Set frm = GetForm(picNested(Index)) MsgBox frm.Name, vbOKOnly, "Name of form"End Sub