Thêm hàng loạt Control trong USERFORM, là khi tạo một dự án trong Excel VBA kết hợp việc sử dụng UserForm. Đôi khi bạn có thể muốn tạo các Điều khiển thực tế thông qua sự lựa chọn của người dùng.Trong bài này mình sẽ hướng dẫn cách sử dụng UserForm trong VBA, đây là một tính năng rất hay của lập trình Excel, nó giúp ta tạo ra những form nhập dữ liệu một cách nhanh chóng.
Nội dung chính
Thêm hàng loạt Control trong USERFORM
I. USERFORM LÀ GÌ
Trong một dự án VBA, người dùng có thể chọn nhập dữ liệu từ chính ứng dụng nền (Excel, Autocad…). Tuy nhiên trong nhiều trường hợp giao diện nhập – xuất dữ liệu trên ứng dụng nền chưa đáp ứng được yêu cầu hoặc việc nhập liệu không mang lại sự tiện lợi cho người dùng.
Khi đó cần tạo ra giao diện “nhập – xuất” riêng thông qua việc sử dụng UserForm trong dự án VBA. Tổng quát lại, để nhập – xuất dữ liệu trong dự án VBA ta có thể sử dụng một trong các cách, Sử dụng chính ứng dụng nền, Sử dụng UserForm
UserForm thực chất là một (nhiều) cửa số, do người dùng lập ra nhằm giải quyết các yêu cầu khác nhau của dự án. Vì thế trong UserForm luôn có những thành phần phục vụ cho nhu cầu tương tác giữa người dùng và chương trình: Nhập, xuất dữ liệu, lựa chọn cách xử lý dữ liệu (điều hướng xử lý dữ liệu), ra lệnh xử lý… Những thành phần này được gọi là điều khiển (Controls).
II. CODE Thêm hàng loạt Control trong USERFORM
BƯỚC 1 : Ví dụ ta có 1 danh sách sản phẩm như hình dưới :
Bạn copy đoạn code này vào userform
Sub Cot1()
Dim LR, i As Integer
LR = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LR
Set TenSP1 = UserForm1.Controls.Add("Forms.Textbox.1")
With TenSP1
.Name = "Label" & i
.Left = 5
.Height = 30
.Top = k + 5
.Width = 200
.Value = Sheet1.Cells(i, 1)
End With
Private Sub UserForm_Activate()
Call Cot1
End Sub
Lr , i : Mình khai báo biên Integer vì nó là 1 con số
Lr : ở đây mình đang tìm kiếm dòng cuối cùng của dữ liệu ở Sheet1
For i : mình cho vòng lặp chạy từ 2 đến dòng cuối chung
UserForm1.Controls.Add : ở Userform mình add các Controls có dạng là Textbox , ( bạn có thể thay đổi Label , hoặc nhìu thứ khác )
With : để mình không cần lập lại đối tượng đó nhìu lần
Name : tên control tạo là gì ( không đc giống nhau )
Top , Left , Hight , With : các chiều cao rông, dài ngắn , nằm trên hoặc dưới , tùy vào người dùng tạo ra
Value : giá trị trả về nó là gi ở sheet1
Sub UserForm_Activate() : khi userform bật lên là tạo các control ở code trên
Bạn có thể thêm các Properties tùy vào sở thích của bạn .
Nếu bạn muốn thêm các Textbox, chứa thông tin Tên SP trong hình dưới đây bạn phải làm như thế nào, bạn có thể tham khảo code dưới đây:
Sub Cot1()
Dim LR, i As Integer
LR = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LR
Set TenSP1 = UserForm1.Controls.Add("Forms.Textbox.1")
Set TenSP2 = UserForm1.Controls.Add("Forms.Textbox.1")
Set TenSP3 = UserForm1.Controls.Add("Forms.Textbox.1")
Set TenSP4 = UserForm1.Controls.Add("Forms.Textbox.1")
With TenSP1
.Name = "Label" & i
.Left = 5
.Height = 30
.Top = k + 5
.Width = 200
.Value = Sheet1.Cells(i, 1)
End With
With TenSP2
.Name = "Label" & i
.Left = 205
.Height = 30
.Top = k + 5
.Width = 200
.Value = Sheet1.Cells(i, 2)
End With
With TenSP3
.Name = "Label" & i
.Left = 405
.Height = 30
.Top = k + 5
.Width = 50
.Value = Sheet1.Cells(i, 3)
End With
With TenSP4
.Name = "Label" & i
.Left = 465
.Height = 30
.Top = k + 5
.Width = 50
.Value = Sheet1.Cells(i, 4)
End With
k = k + 35
Next i
End Sub
Private Sub UserForm_Activate()
Call Cot1
End Sub
III. TẢI DEMO
Kết : Như vậy, chúng tôi đã giới thiệu và hướng dẫn cho bạn về cách Thêm hàng loạt Control trong USERFORM, bài viết này có thể giúp bạn nâng cao kĩ năng tin học của mình về Desgin userform 1 cách chuyện nghiệp.
Các bài viết liên quan bên dưới.
Cuộn chuột trong Listbox Combobox WINDOWN API