Biểu mẫu người dùng VBA trong Excel
Chương này hướng dẫn bạn cách tạo Biểu mẫu người dùng VBA trong Excel. Userform mà chúng ta sẽ tạo ra như sau:
Thêm điều khiển
Để thêm các điều khiển vào Biểu mẫu người dùng, hãy thực hiện các bước sau.
-
Nhấp vào Chèn, Biểu mẫu người dùng. Nếu Hộp công cụ không tự động xuất hiện, hãy bấm Xem, Hộp công cụ. Màn hình của bạn sẽ được thiết lập như bên dưới.
-
Thêm các điều khiển được liệt kê trong bảng bên dưới. Khi điều này đã được hoàn thành, kết quả sẽ phù hợp với hình ảnh của Biểu mẫu người dùng được hiển thị trước đó. Ví dụ: tạo điều khiển hộp văn bản bằng cách nhấp vào TextBox từ Hộp công cụ. Tiếp theo, bạn có thể kéo một hộp văn bản trên Biểu mẫu người dùng. Khi bạn đến khung Xe, hãy nhớ vẽ khung này trước khi bạn đặt hai nút tùy chọn vào đó.
-
Thay đổi tên và chú thích của các điều khiển theo bảng dưới đây. Tên được sử dụng trong mã VBA Excel. Phụ đề là những thứ xuất hiện trên màn hình của bạn. Bạn nên thay đổi tên của các điều khiển. Điều này sẽ làm cho mã của bạn dễ đọc hơn. Để thay đổi tên và chú thích của các điều khiển, hãy bấm Chế độ xem, Cửa sổ Thuộc tính và bấm vào từng điều khiển.
Control |
Name |
Caption |
Userform |
DinnerPlannerUserForm |
Dinner Planner |
Text Box |
NameTextBox |
|
Text Box |
PhoneTextBox |
|
List Box |
CityListBox |
|
Combo Box |
DinnerComboBox |
|
Check Box |
DateCheckBox1 |
June 13th |
Check Box |
DateCheckBox2 |
June 20th |
Check Box |
DateCheckBox3 |
June 27th |
Frame |
CarFrame |
Car |
Option Button |
CarOptionButton1 |
Yes |
Option Button |
CarOptionButton2 |
No |
Text Box |
MoneyTextBox |
|
Spin Button |
MoneySpinButton |
|
Command Button |
OKButton |
OK |
Command Button |
ClearButton |
Clear |
Command Button |
CancelButton |
Cancel |
7 Labels |
No need to change |
Name:, Phone Number:, etc. |
Lưu ý: hộp tổ hợp là một danh sách thả xuống từ đó người dùng có thể chọn một mục hoặc điền vào lựa chọn của riêng mình. Chỉ có thể chọn một trong các nút tùy chọn.
Hiển thị biểu mẫu người dùng
Để hiển thị Biểu mẫu người dùng, hãy đặt liên kết: / vba-create-a-macro # command-button [command button]
trên trang tính của bạn và thêm dòng mã sau:
Private Sub CommandButton1_Click() DinnerPlannerUserForm.Show End Sub
Bây giờ chúng ta sẽ tạo Sub UserForm_Initialize. Khi bạn sử dụng phương thức Hiển thị cho Biểu mẫu người dùng, phụ này sẽ tự động được thực thi.
-
Trong Project Explorer, nhấp chuột phải vào DinnerPlannerUserForm và sau đó nhấp vào View Code.
-
Chọn Userform từ danh sách thả xuống bên trái. Chọn Khởi tạo từ danh sách thả xuống bên phải.
-
Thêm các dòng mã sau:
Private 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 'Set no car as default CarOptionButton2.Value = True 'Empty MoneyTextBox MoneyTextBox.Value = "" 'Set Focus on NameTextBox NameTextBox.SetFocus End Sub
Giải thích: hộp văn bản được làm trống, hộp danh sách và hộp tổ hợp được lấp đầy, hộp kiểm không được chọn, v.v.
Gán Macro
Bây giờ chúng tôi đã tạo phần đầu tiên của Biểu mẫu người dùng. Mặc dù nó trông đã gọn gàng rồi, nhưng sẽ không có gì xảy ra khi chúng ta nhấp vào các nút lệnh trên Userform.
-
Trong Project Explorer, nhấp đúp vào DinnerPlannerUserForm.
-
Nhấp đúp vào nút Quay tiền.
-
Thêm dòng mã sau:
Private Sub MoneySpinButton_Change() MoneyTextBox.Text = MoneySpinButton.Value End Sub
Giải thích: dòng mã này cập nhật hộp văn bản khi bạn sử dụng nút xoay.
-
Nhấp đúp vào nút OK.
-
Thêm các dòng mã 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 Cells(emptyRow, 7).Value = MoneyTextBox.Value End Sub
Giải thích: đầu tiên, chúng tôi kích hoạt Sheet1. Tiếp theo, chúng tôi xác định voidRow. Biến voidRow là hàng trống đầu tiên và tăng lên mỗi khi thêm bản ghi. Cuối cùng, chúng tôi chuyển thông tin từ Userform sang các cột cụ thể của blankRow.
-
Nhấp đúp vào nút Clear.
-
Thêm dòng mã sau:
Private Sub ClearButton_Click() Call UserForm_Initialize End Sub
Giải thích: dòng mã này gọi Sub UserForm_Initialize khi bạn nhấp vào nút Clear.
-
Nhấp đúp vào nút Hủy.
-
Thêm dòng mã sau:
Private Sub CancelButton_Click() Unload Me End Sub
Giải thích: dòng mã này đóng Biểu mẫu người dùng khi bạn nhấp vào nút Hủy.
Kiểm tra Userform
Thoát khỏi Visual Basic Editor, nhập các nhãn được hiển thị bên dưới vào hàng 1 và kiểm tra Biểu mẫu người dùng.
Kết quả: