Trong bài học trước, Tinvanphong.com có gửi đến bạn đọc cách Thêm hàng loạt Control trong USERFORM. Hôm nay, Tinvanphong.com tiếp tục gửi bạn cách Chọn nhiều Control trả về dữ liệu tương ứng trong VBA . Thông thường, bạn cần tạo nhiều Label và mỗi Label là 1 Sub, cách này đối với bạn có sử dụng đối với trường hợp 5 6 cái LABEL. Còn đối với 500 LABEL thì sao, đấy không phải là cách hiểu quả hay. Hãy cùng mình xem bài hướng dẫn sau đây nhé.
Chọn nhiều Control trả về dữ liệu tương ứng trong VBA
I.CÔNG DỤNG
Tạo nhiều CONTROL trong USERFORM.
Trả về giá trị tương ứng ,theo dữ liệu trong WORKSHEET.
Chỉ cần 1 Sub khởi tạo.
II. CODE, HƯỚNG DẪN
Bước 1 : Các bạn cần tạo cái Frame, trong userform và gắn CODE dưới vào.
'--------------------------------------------- [ GIAO DIEN ] ----------------------------------- '--------------------------------------------- [ GIAO DIEN ] ----------------------------------- '--------------------------------------------- [ GIAO DIEN ] ----------------------------------- '--------------------------------------------- [ GIAO DIEN ] ----------------------------------- Private M_Label As Collection Sub Cot1() K = 0 Dim LR, I As Integer LR = Sheet2.Range("A" & Rows.Count).End(xlUp).Row For I = 2 To LR Step 3 Set TenSP = Frame1.Controls.Add("Forms.Label.1") With TenSP .Name = "Label" & I .Left = 5 .Height = 55 .Top = K + 5 .Width = 70 .BorderStyle = 1 ' mau nen bat .BorderColor = &HC0C0C0 ' Vieng .BackStyle = 1 ' vieng bat .TextAlign = 2 ' chu nam giua .Font.Size = 32 ' font chu .Font.Bold = True ' in dam .ForeColor = Font_Color1 .Font.Name = "Segoe UI" .Caption = Sheet2.Cells(I, 1) Frame1.ScrollHeight = .Top + 60 End With K = K + 60 Next I End Sub Sub Cot2() K = 0 Dim LR, I As Integer LR = Sheet2.Range("A" & Rows.Count).End(xlUp).Row For I = 3 To LR Step 3 Set TenSP = Frame1.Controls.Add("Forms.Label.1") With TenSP .Name = "Label" & I .Left = 80 .Height = 55 .Top = K + 5 .Width = 70 .BorderStyle = 1 ' mau nen bat .BorderColor = &HC0C0C0 ' Vieng .BackStyle = 1 ' vieng bat .TextAlign = 2 ' chu nam giua .Font.Size = 32 ' font chu .Font.Bold = True ' in dam .ForeColor = Font_Color1 .Font.Name = "Segoe UI" .Caption = Sheet2.Cells(I, 1) End With K = K + 60 Next I End Sub Sub Cot3() K = 0 Dim LR, I As Integer LR = Sheet2.Range("A" & Rows.Count).End(xlUp).Row For I = 4 To LR Step 3 Set TenSP = Frame1.Controls.Add("Forms.Label.1") With TenSP .Name = "Label" & I .Left = 155 .Height = 55 .Top = K + 5 .Width = 70 .BorderStyle = 1 ' mau nen bat .BorderColor = &HC0C0C0 ' Vieng .BackStyle = 1 ' vieng bat .TextAlign = 2 ' chu nam giua .Font.Size = 32 ' font chu .Font.Bold = True ' in dam .ForeColor = Font_Color1 .Font.Name = "Segoe UI" .Caption = Sheet2.Cells(I, 1) End With K = K + 60 Next I End Sub Private Sub UserForm_Initialize() Call Cot1 Call Cot2 Call Cot3 Dim A_Label As Class1 Dim I, LR As Integer LR = Sheet2.Range("A" & Rows.Count).End(xlUp).Row Set M_Label = New Collection On Error Resume Next For I = 2 To LR Set A_Label = New Class1 Set A_Label.MyLabel = Me.Controls("Label" & I) M_Label.Add A_Label, CStr(M_Label.Count - 1) Next I End Sub
Call Cot1, Co2, Cot3 : trong bài viết trước mình có chỉ cho các ban cách tạo nhìu Control trong VBA bạn có thể xem tại đây
LR : tìm dòng cuối bản dử liệu để sát đinh được có bao nhiu CONTROL mình phải tạo ,
For i : Mình sử dụng vòng lặp chạy qua để tạo các CONTROL , kết hợp với bước nhảy là 3, củ thể là 1 4 7 , 2 5 8 , 3 6 9
Collection trong VBA được sử dụng để lưu trữ một nhóm các giá trị. Collection có thể lưu trữ một tập các hạng mục tương tự, ví dụ như một danh sách tên của các sinh viên hoặc tên quốc gia. Sử dụng một collection hoặc array cho phép bạn nhanh chóng và dễ dàng thao tác một số lượng lớn các hạng mục.
Public [ tên biến ] là lệnh quy định rằng biến số đó có thể truy xuất hoặc được sử dụng bởi bất kỳ hàm thủ tục nào trong các mô-đun khác. Để có thể sử dụng được nó, bạn phải khai báo biến ấy nằm ngoài hàm thủ tục (tức là có thể ở phần đầu tiên trong mô-đun lệnh). Dạng biến số này trở nên hữu ích khi bạn có một giá trị biến được xuất từ một hàm thủ tục và bạn muốn chuyển giá trị ấy sang một hàm khác trong cùng một mô-đun lệnh.
Bước 2 : Bạn tao 1 Class Model, rồi gắn code dưới vào
Public WithEvents MyLabel As MSForms.Label Public Sub MyLabel_Click() HOME.HIENTHISOBAN = MyLabel.Caption End Sub
HOME.HIENTHISOBAN = MyLabel.Caption : bạn cần chỉnh lại tên LABEL để hiển thị ra
III.DOWN FILE
Như vậy, chúng tôi đã giới thiệu và hướng dẫn cho bạn về cách sử dụng tạo nhiều control. Hy vọng rằng, bài viết này có thể giúp bạn nâng cao kĩ desgin giao diện trong USERFORM của mình.
Tham khảo các bài viết liên quan.
Phần mềm xuất nhập tồn bằng Excel miễn phí 2021