UserForm VBA và 2 cách tạo giao diện người dùng trong Excel
Sử dụng UserForm trong VBA sẽ giúp bạn tạo một ứng dụng đúng nghĩa. Với giao diện, các sự kiện và lệnh được liên kết với đối tượng trong UserForm VBA, bạn có thể tạo được một ứng dụng có giao diện thực hiện theo các yêu cầu được lập trình.
Trong Excel, ngoài tạo UserForm trong VBA bạn còn có thể sử dụng các công cụ vẽ (Shape), Developer để tạo Form nhập ngay trên bảng tính.
User Form trong VBA
Đây là giao diện được tạo trong VBA và bạn có thể gọi nó từ bất cứ đâu trong một Workbook.
Để tạo một UserForm trong VBA, bạn chuột phải vào VPAProject > Insert > UserForm. Sẽ có 3 phần cần sử dụng khi tạo UserForm như sau:
- (1): Khung tạo giao diện người dùng. Nơi bạn có thể bố trí các đối tượng tương tác, hiện thị từ hộp công cụ Toolbox (2)
- (2): Các đối tượng để tạo giao diện như Label (nhãn đặt tên), TextBox (ô nhập liệu), ListBox (danh sách)…Nếu bạn không thấy hộp công cụ này thì có thể vào View > Toolbox.
- (3): Thuộc tính của đối tượng. Với mỗi UserForm hay các đối tượng được tạo thì bạn có thể thay đổi các thuộc tính như Caption (văn bản hiện thị trên giao diện), Font, Name (tên của đối tượng sử dụng khi lập trình), Background…
Ví dụ sử dụng UserForm tạo giao diện nhập và kiểm tra số nhập.
Bạn có thể tạo một giao diện như sau:
- Label.
- TextBox.
- Command Button.
Double Click vào nút nhấn Kiem tra và tạo hàm như sau:
Private Sub btnKiemtra_Click()
If (txtso.Text <> "") Then
If IsNumeric(txtso.Text) Then
MsgBox "giá tri vua nhap la so"
Else
MsgBox "giá tri vua nhap khong phai la so"
End If
End If
End Sub
Ghi chú:
- btnKiemtra: Name (Properties) Command Button (Kiem tra).
- txtso: TextBox (ô nhập).
- IsNumeric(Expression): hàm kiểm tra số, nếu đúng kết quả trả về là True.
Kết quả: Khi chạy thì bạn sẽ có một giao diện như đã tạo. Nhập số vào TextBox và nhấn Kiem tra, bạn sẽ thực thi lệnh như đã lập trình.
Cách gọi UserForm từ VBA
Sub callUserForm()
UserForm1.Show
End Sub
Cách ẩn UserForm
Sub callUserForm()
UserForm1.Hide
End Sub
UserForm trong bảng tính Excel
Ngoài cách tạo trong VBA, tại ngay bản tính Excel cũng có thể tạo UserForm từ các ActiveX Control. Bạn có thể sử dụng các công cụ như:
- INSSERT > SHAPE để tạo nền, tạo Label (nhãn).
- DEVELOPER > Insert > ActiveX Controls/ Form Control, để tạo các đối tượng nhập liệu, hiển thị, nút nhấn…
*Sự khác nhau giữa ActiveX Controls/ Form Control:
- Form Control: các đối tượng này sẽ được liên kết với Macro khi bạn tạo và không cần tạo sự kiện riêng. Một số đối tượng không sử dụng được trên bảng tính.
- ActiveX Controls: các đối tượng này cũng như đối tượng trong User Form. Bạn có thể thay đổi các thuộc tính trong Properties và phải tạo sự kiện riêng bằng cách Double Click vào đối tượng.
Ví dụ tạo 1 Form để kiểm tra giá trị nhập là số.
Bạn có thể tạo một giao diện như sau:
- Nền và Label (Nhập số) tạo bằng Shape.
- Textbox: TextBox (ActiveX Controls).
- Nút nhấn (Kiem tra): Command Button (ActiveX Controls).
*Bạn có thể chuột phải vào đối tượng > Properties để thay đổi các thuộc tính như (Caption, Name, Font….)
Double Click vào nút nhấn Kiem tra và tạo một hàm như sau:
Private Sub btnKiemtra_Click()
If (txtso.Text <> "") Then
If IsNumeric(txtso.Text) Then
MsgBox "giá tri vua nhap la so"
Else
MsgBox "giá tri vua nhap khong phai la so"
End If
End If
End Sub
*Lưu ý: Khi tạo Form trong bảng tính thì tự động VBA sẽ tạm ngưng hoạt động, bạn cần nhấn nút Play (▶) trong VBA để hoạt động.
Sau đó, bạn có thể nhập giá trị vào TextBox và khi nhấn nút Kiem tra thì kết quả sẽ hiện lên MsgBox.
Như vậy, bạn đã vừa tìm hiểu xong 2 cách tạo UserForm để thực thi lệnh VBA trong Excel. Bạn hãy sử dụng để tạo các Form nhập, truy xuất dữ liệu theo cách tùy biến của riêng mình nhé.
Chúc các bạn vui vẻ!
?DienDan.Edu.Vn cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn. https://diendan.edu.vn/
DienDan.Edu.Vn Cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn.DienDan.Edu.Vn! là một website với tiêu chí chia sẻ thông tin,... Bạn có thể nhận xét, bổ sung hay yêu cầu hướng dẫn liên quan đến bài viết. Vậy nên đề nghị các bạn cũng không quảng cáo trong comment này ngoại trừ trong chính phần tên của bạn.Cám ơn.