control.add 変数のついて

解決


こう  2004-05-23 18:59:12  No: 113451  IP: [192.*.*.*]

僕はクリックするたびに
Labe1
Label2



というふうにラベルが追加されていくものを作りたいと思っています。
そこで

Option Explicit
Private WithEvents btnObj As Label
Dim I As Long
-------------------------------------------------------------
Private Sub Command1_Click()
I = 1
Set btnObj = Form1.Controls.Add("VB.Label", "btnObj(I)")
With btnObj(I)
.Visible = True
.Width = 2000
.Caption = "Hello"
.Top = 1000 + 500 * I
.Left = 1000
End With
I = I + 1
End Sub

( (I) というのはここを変数Iとしたいと思っているということです。)

というふうにしたいんですが
オブジェクト名の中に変数を入れにはどうすればいいのでしょうか?
またはオブジェクト名に変数を入れずにこのようなプログラムを作る方法があれば教えてください。
  
よろしくお願いします!

編集 削除
Say  2004-05-23 23:21:48  No: 113452  IP: [192.*.*.*]

Loadステートメントによる動的追加では
だめなのでしょうか?
For i = 1 To 10
    Load Label1(i)
    Label1(i).Top = Label1(i -  1).Top + 500
.....
とか?

あるいは、イベントを使わないのなら
Private  lblObj(10) As Label
.....
Set lblObj(i) = Form1.Controls.Add("VB.Label", "lbl" & CStr(i))
.....

とか、プロパティ、メソッドはループで利用したいが
イベントをくくらなくていいのなら
Private WithEvents lblObj1 As Label
Private WithEvents lblObj2 As Label
Private WithEvents lblObj3 As Label
Private lblObj(3) As Label
Set lblObj1 = Form1.Controls.Add("VB.Label", "lbl1"
Set lblObj2 = Form1.Controls.Add("VB.Label", "lbl2"
Set lblObj3 = Form1.Controls.Add("VB.Label", "lbl3"
Set lblObj(0) = lblObj1
Set lblObj(1) = lblObj2
Set lblObj(2) = lblObj3
For i = 0 To 2
   lblObj(i).Top = 1000 + 500 * i
   lblObj(i).Visible = True
.....

とか

編集 削除
こう  2004-05-24 19:23:27  No: 113453  IP: [192.*.*.*]

できました!
Private  lblObj(10) As Label
.....
Set lblObj(i) = Form1.Controls.Add("VB.Label", "lbl" & CStr(i))
というのが僕のやりたかったことです><
ずっと探しててわかんなかったことなので本当に感謝です!
ありがとうございました!

編集 削除