USERFORM FORM NGƯỜI DÙNG TRONG VBA EXCEL Bài viết hướng dẫn bạn làm thế nào để tạo ra một UserForm trong VBA Excel.. Thêm các điều khiển được liệt kê trong bảng dưới đây như hình ảnh t
Trang 1USERFORM (FORM NGƯỜI DÙNG) TRONG VBA
EXCEL
Bài viết hướng dẫn bạn làm thế nào để tạo ra một UserForm trong VBA
Excel UserForm là form để tương tác với user
File bài tập đính kèm (Bạn tải về cùng nhé)!
Bài viết hướng dẫn bạn làm thế nào để tạo ra một UserForm trong VBA Excel UserForm là form để tương tác với user, chúng ta sẽ ví dụ một form như sau:
Trang 2Thêm các điều khiển (ActiveX Controls):
Để thêm các điều khiển lên Userform, ta làm như sau:
1 Mở Visual Basic Editor Nếu Project Explorer không hiển thị thì click View, Project Explorer
2 Click Insert, Userform Nếu Toolbox không tự động xuất hiện, bấm vào View, Toolbox Màn hình của bạn sẽ được hiển thị như sau:
3 Thêm các điều khiển được liệt kê trong bảng dưới đây như hình ảnh trên UserForm thể hiện trước đó Ví dụ, tạo ra một text box bằng cách click vào TextBox từ hộp công cụ Tiếp theo kéo text box lên UserForm
4 Thay đổi tên (name) và chú thích (captions) của các điều khiển theo bảng dưới đây Tên sẽ được sử dụng trong code của Excel VBA Chú thích sẽ xuất hiện trên màn hình của bạn để mô tả thông tin Ta nên thay đổi tên của điều khiển để viết code dễ dàng
Trang 3hơn để đọc Để thay đổi tên (Name) và chú thích (Caption) của các điều khiển, bấm View, Properties Window và click vào từng điều khiển
Userform DinnerPlannerUserForm Dinner Planner
Option Button CarOptionButton1 Yes
Spin Button MoneySpinButton
Trang 4Control Name Caption
7 Labels No need to change Name:, Phone Number:, etc
Lưu ý: Một combo box là một danh sách thả xuống (drop-down list) để người dùng
có thể chọn một mục trong danh sách đó
Hiển thị Userform
Đặt một command button trên worksheet và paste vào đoạn code sau:
Private Sub CommandButton1_Click()
DinnerPlannerUserForm.Show
End Sub
Bây giờ chúng ta sẽ tạo ra các giá trị khởi tạo với Sub UserForm_Initialize Khi bạn
sử dụng Show cho UserForm, sub này sẽ được tự động thực thi
1 Mở Visual Basic Editor
2 Trên Project Explorer, click phải chuột vào DinnerPlannerUserForm và click View Code
3 Chọn Userform từ danh sách thả xuống bên trái, chọn Initialize danh sách bên phải
4 Thêm đoạn code bên dưới:
Trang 5Private Sub UserForm_Initialize()
'Empty NameTextBox
NameTextBox.Value = ""
'Empty PhoneTextBox
PhoneTextBox.Value = ""
'Empty CityListBox
CityListBox.Clear
'Fill CityListBox
With CityListBox
.AddItem "San Francisco" AddItem "Oakland"
.AddItem "Richmond"
End With
'Empty DinnerComboBox
DinnerComboBox.Clear
'Fill DinnerComboBox
With DinnerComboBox
.AddItem "Italian"
.AddItem "Chinese"
.AddItem "Frites and Meat" End With
'Uncheck DataCheckBoxes DateCheckBox1.Value = False DateCheckBox2.Value = False DateCheckBox3.Value = False
Trang 6'Set no car as default
CarOptionButton2.Value = True
'Empty MoneyTextBox
MoneyTextBox.Value = ""
'Set Focus on NameTextBox
NameTextBox.SetFocus
End Sub
Chú ý: Các đoạn text sau dâu ‘ (nháy đơn) là các lời chú thích, nó sẽ không được
thực thi khi chạy code
Gán Macros
Chúng ta đã tạo ra được phần đầu của UserForm Mặc dù trông có vẻ giống một giao diện tương tác với người dùng, nhưng không có gì xảy ra khi chúng ta bấm vào các nút lệnh trên UserForm
1 Mở Visual Basic Editor
2 Trên Project Explorer, nháy đôi vào DinnerPlannerUserForm
3 Nháy đôi vào nút Money spin
4 Thêm đoạn code sau:
Private Sub MoneySpinButton_Change()
MoneyTextBox.Text = MoneySpinButton.Value
End Sub
Giải thích: Dòng code này update giá trị của text box khi người dùng sử dụng nút
spin
Trang 75 Nháy đôi vào nút OK
6 Thêm đoạn code sau:
Private Sub OKButton_Click()
Dim emptyRow As Long
'Make Sheet1 active
Sheet1.Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Transfer information
Cells(emptyRow, 1).Value = NameTextBox.Value
Cells(emptyRow, 2).Value = PhoneTextBox.Value
Cells(emptyRow, 3).Value = CityListBox.Value
Cells(emptyRow, 4).Value = DinnerComboBox.Value
If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption
If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption
If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption
If CarOptionButton1.Value = True Then
Cells(emptyRow, 6).Value = "Yes"
Else
Cells(emptyRow, 6).Value = "No"
End If
Trang 8Cells(emptyRow, 7).Value = MoneyTextBox.Value
End Sub
Giải thích: Đầu tiên, chúng ta kích hoạt Sheet1 Tiếp theo, chúng ta xác định
emptyRow Biến emptyRow là dòng trống đầu tiên và mỗi lần tăng thêm 1 dòng Cuối cùng, chúng ta chuyển các thông tin từ các điều khiển trên UserForm để các cột cụ thể của dòng emptyRow
7 Nháy đôi vào nút Clear
8 Thêm đọa code sau:
Private Sub ClearButton_Click()
Call UserForm_Initialize
End Sub
Giải thích: dòng mã này gọi UserForm_Initialize Sub khi bạn nhấn vào nút Clear
9 Nháy đôi vào nút Cancel
10 Thêm đọa code sau:
Private Sub CancelButton_Click()
Unload Me
End Sub
Giải thích: dòng mã này đóng UserForm khi bạn bấm vào nút Cancel
Kiểm tra Userform
Thoát Visual Basic Editor, nhập thông tin hiển thị dưới đây vào dòng 1 và kiểm tra UserForm
Kết quả: