Tôi cần phải tạo nhãn và nút động và sau đó thêm chúng vào khung trong một biểu mẫu người dùng. Làm thế nào để tôi làm điều này? Có vẻ như nó nên dễ dàng hơn nó thực sự là.Thêm điều khiển vào khung trong biểu mẫu người dùng Excel với VBA
Trả lời
Đoạn mã dưới đây trình bày cách bạn có thể tự động cư một khung trong một userform với các điều khiển ...
Trong hình thức tôi sử dụng tôi đã có một kiểm soát khung tên Frame1, vì vậy trong UserForm_Initialize bạn gọi Frame1.Controls. Thêm để nhúng điều khiển trong khung. Bạn có thể đặt điều khiển được trả lại cho biến điều khiển WithEvents mà bạn đã xác định trong mô-đun mã UserForm để bạn có thể trả lời các sự kiện trên bất kỳ điều khiển nào bạn muốn ...
Vì vậy, với phương pháp này bạn cần phải viết trước bất kỳ mã sự kiện nào bạn muốn cho bất kỳ điều khiển nào bạn tạo ...
Cũng lưu ý rằng bạn có thể định vị và điều chỉnh các điều khiển ngay cả khi thuộc tính trên cùng, bên trái, chiều rộng và chiều cao không nhất thiết xuất hiện trong intellisense ...
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
Biến thể của tôi về chủ đề ở trên. Điều này chỉ là cho một mảng 4x4 của các nút mặc dù. Tạo một userform và thêm nó vào mã của nó. Các khái niệm tương tự có thể được sử dụng với nhãn của bạn (hoặc xem câu trả lời trước):
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
Tại sao '" 1 "' ở cuối tên lớp trong phương thức 'add'? – Triztian
Tôi không biết. Tôi biết rằng nó không hoạt động mà không có điều đó. –
Tôi thực sự muốn biết tại sao nó phải là "Forms.CommandButton.1" quá – FinancialRadDeveloper