Using an array of labels should make coding easier. But you can add a label without an index also which requires you to create unique names for the labels...
Code:
' Index is the frame index, say 100 for this example
With Me.Controls.Add("VB.Label", "lblFrame" & Index, Frame1(Index))
.Caption = somecaption
.Move X, Y, Width, Height
. Enabled = True
. Visible = True
' other properties
End With
To reference the label later in any code: Me.Controls("lblframe" & Index).ForeColor = vbBlue
Edited: Maybe I am misunderstanding the question. Are you saying you want to move a single label around to multiple frames. In other words, 1 label shared by all your frames? If so, you will want to change containers for the label
Code:
Set Label1.Container = Frame1(0)