僕はクリックするたびに
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としたいと思っているということです。)
というふうにしたいんですが
オブジェクト名の中に変数を入れにはどうすればいいのでしょうか?
またはオブジェクト名に変数を入れずにこのようなプログラムを作る方法があれば教えてください。
よろしくお願いします!
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
.....
とか
できました!
Private lblObj(10) As Label
.....
Set lblObj(i) = Form1.Controls.Add("VB.Label", "lbl" & CStr(i))
というのが僕のやりたかったことです><
ずっと探しててわかんなかったことなので本当に感謝です!
ありがとうございました!