إضافة عناصر التحكم إلى إطار في Excel UserForm مع VBA
سؤال
أحتاج إلى إنشاء ملصقات وأزرار ديناميكيا ثم قم بإضافتها إلى إطار ضمن UserForm. كيف أقوم بهذا العمل؟ يبدوا مثلها تماما ينبغي كن أسهل مما هو عليه حقا.
المحلول
يوضح التعليمة البرمجية التالية كيف يمكنك ملء إطار ديناميكيا في UserForm مع عناصر التحكم ...
في النموذج الذي استخدمته يحتوي على عنصر تحكم إطار يدعى Frame1، لذلك في UserForm_initialize، يمكنك استدعاء الإطار 1.controls.ADD لتضمين عنصر تحكم في الإطار. يمكنك ضبط عنصر التحكم الذي يتم إرجاعه إلى متغير تحكم Withevents الذي حددته في وحدة رمز UserForm حتى تتمكن من الاستجابة للأحداث على أي عناصر تحكم تريده ...
لذلك مع هذه الطريقة تحتاج إلى كتابة أي رمز الحدث الذي تريده لأي عناصر تحكم تقوم بإنشائه ...
لاحظ أيضا أنه يمكنك وضع وحجم عناصر التحكم الخاصة بك حتى إذا كانت الخصائص العلوية واليسار والعرض والطول لا تأتي بالضرورة في ...
Private WithEvents Cmd As MSForms.CommandButton
Private WithEvents Lbl As MSForms.Label
Private Sub UserForm_Initialize()
Set Lbl = Frame1.Controls.Add("Forms.Label.1", "lbl1")
Lbl.Caption = "Foo"
Set Cmd = Frame1.Controls.Add("Forms.CommandButton.1", "cmd1")
End Sub
Private Sub Cmd_Click()
Cmd.Top = Cmd.Top + 5
End Sub
Private Sub Lbl_Click()
Lbl.Top = Lbl.Top + 5
End Sub
نصائح أخرى
اختلافي على السمة أعلاه. هذا هو فقط للحصول على صفيف 4x4 من الأزرار رغم ذلك. قم بإنشاء UserForm وإضافة هذا إلى التعليمات البرمجية. يمكن استخدام نفس المفاهيم مع ملصقاتك (أو راجع الإجابة السابقة):
Private cmdLots(20) As MSForms.CommandButton
Private Sub UserForm_Initialize()
For i = 1 To 4
For j = 1 To 4
k = i + (4 * j)
Set cmdLots(k) = UserForm2.Controls.Add("Forms.CommandButton.1", "cmd1")
With cmdLots(k)
.Top = i * 25
.Left = (j * 80) - 50
.BackColor = RGB(50 * i, 50 * j, 0)
.Caption = "i= " & i & " j= " & j
End With
Next j
Next i
End Sub