View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Jim Thomlinson Jim Thomlinson is offline
external usenet poster
 
Posts: 5,939
Default Change label name with loop

vArray1 should be of type variant not string... Ooops...
--
HTH...

Jim Thomlinson


"Jim Thomlinson" wrote:

Your close but you are still missing a few things.

Unless you have specified option base 1 then your array starts at 0 and you
will blow through your upper bound. Count from 0 to 9. Since you have no
label zero you will have to add 1 to your label counter.

The line
Set oLabel =( "Label" & i )
is trying to set your control to a string. You want
Set oLabel = Controls("Label" & i + 1)

Finally don't bother using integer. VB converts int to long anyways so you
are better off to just use long. Here is my final code...

Sub LabelCaptions()
Dim oLabel As Control, i As Long, vArray1() as String

vArray1 = Array("Apples", "Oranges", "Lemons")
With UserForm1
For i = 0 To 2
Set oLabel = Controls("Label" & i + 1)
oLabel.Caption = vArray1(i)
Next i
End With
End Sub
--
HTH...

Jim Thomlinson


" wrote:

Suppose I have a userform with 10 labels on it named
Label1, Lable2, Label3 ... Label10. These labels have different
captions depending on user chosen uses.
The captions can be defined by different arrays such as
vArray1=Array("Apples", "Oranges" ,"Lemons"...)
vArray2=Array("Red","Yellow","Blue",...)

Is it possible to change the captions using a For statement like

Sub LabelCaptions
Dim oLabel as control, i as integer
With UserForm1
For i = 1 To 10
Set oLabel =( "Label" & i )
oLabel.Caption = vArray1(i)
Next
End With
End Sub

When I try this I get an Error at the Set Statment
How can I set oLabel to the variable name
Thanks
Merlyn