این کار کاملا شدنی هست، فقط بخاطر محدودیت کنترل ها توی بخش یوزرفرم تعداد کنترلهای ایجاد شده تون به سایز فرم محدود میشه و شما نباید اجازه ایجاد تعداد بیشتر رو بدین وگرنه از فرم میزنه بیرون.
برای ایجاد هر دسته کنترل (در این مثال TextBox و Label) یه Collection باید تعریف کنید و موقع Initialize شدن فرمتون اون رو New کنید که خالی و آماده کار باشه. مثال:
کد PHP:
Private TxtBxs As Collection
Private Sub UserForm_Initialize()
Set TxtBxs = New Collection
End Sub
کد PHP:
Dim i As Long
Dim TxtBox As Control
For i = 1 To Val(textBox1.Text)
Set TxtBox = Me.Controls.Add("Forms.TextBox.1", "SomeName" & i)
TxtBox .Top = 40 + i * 20
TxtBox .Left = 20
TxtBxs.Add TxtBox, TxtBox.Name
Next i
کد PHP:
Do While TxtBxs.Count > 0
Me.Controls.Remove TxtBxs.Item(1).Name
TxtBxs.Remove 1
Loop
کد PHP:
Label1.ForeColor = RGB(150,120,110)
از رنگهای ثابت خود VBA هم میشه استفاده کرد که خب البته رنگهای اصلی هستن و تعدادشون کمه، مثلا زرد میشه VBA.ColorConstants.vbYellow که میتونید قسمت قبل اسم خود رنگ رو هم ننویسید یعنی بنویسید vbYellow.
از مقادیر Hex یا مبنای 16 هم میتونید استفاده کنید، مثلا &HFFFFFF سفید هستش، به این شکل که &H ثابت هست، شش رقم بعدی 2تا 2تا به ترتیب آبی، سبز و قرمز هستن. 00 در مبنای 16 معادل 0 هست و FF معادل 255. یعنی درواقع مثل همون RGB هست فقط کوتاه تر و برای اکثر مردم سخت تر هست. مثال معادل همون رنگ مثال بالا:
کد PHP:
Label1.ForeColor = &H6E7896
Leave a comment: