array of labels

W

Wiley Post

I want to modify a UserForm dynamically by adding some number of labels from
my VB/Excel program:
Dim labels() as MSForms.Label
:
ReDim labels(NumLabels)

At this point I have an array of Labels with each value set to Nothing. If
I do this:

Set labels(0) = New MSForms.Label
I get runtime "Invalid use of New keyword" and Help says I cannot reference
a class name in this context -- I need to reference a specific object name,
e.g. Label1. So I tried:

Dim Label1 as MSForms.Label
Set labels(0) = New Label1

and I get "User-defined type not defined"

I have tried other things such as
Dim labels() as New MSForms.Label
and I also get errors.

How do I programmatically create an array of Labels so that I can place them
on my UserForm?
 
P

Per Jessen

Hi

I don't think you can do what you are trying to.

I would put the required number of labels on my userform and leave the
caption blank, then use VBA populate the labels needed.

Regards,
Per
 
W

Wiley Post

I was trying to make one UserForm that could be modified at run time for a
few different callers. I'm a bit surprised that it can't be done, or at
least the modifications I want can't be done.

WP
 
D

Dave Peterson

You can add controls to a userform during runtime, but I've always found it
much, much, much easier to just add as many controls as I'll ever need--but hide
the ones that I don't need right away.

Then I can unhide the ones I want when I need them.

It makes life a lot simpler this way.

John Walkenbach shows how to create a userform on the fly. This includes adding
controls to that userform:
http://j-walk.com/ss/excel/tips/tip76.htm

This worked ok for me:

Option Explicit
Private Sub CommandButton1_Click()
Dim iCtr As Long

For iCtr = 1 To 3
With Controls.Add(bstrprogid:="Forms.Label.1", _
Name:="LBL_" & iCtr, Visible:=True)
.Left = 5
.Top = iCtr * 15
.Height = 10
.Width = 200
.Caption = "Hi from " & .Name
End With
Next iCtr
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top