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:

Excel VBA Userform

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.

  1. 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.

Userform Screen Setup in Excel VBA

  1. 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 đó.

  2. 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.

  1. Trong Project Explorer, nhấp chuột phải vào DinnerPlannerUserForm và sau đó nhấp vào View Code.

  2. 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.

  3. 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.

  1. Trong Project Explorer, nhấp đúp vào DinnerPlannerUserForm.

  2. Nhấp đúp vào nút Quay tiền.

  3. 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.

  1. Nhấp đúp vào nút OK.

  2. 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.

  1. Nhấp đúp vào nút Clear.

  2. 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.

  1. Nhấp đúp vào nút Hủy.

  2. 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ả:

Test the Userform