Tải bản đầy đủ (.pdf) (9 trang)

Userform (form người dùng) trong VBA excel

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (464.18 KB, 9 trang )

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

Thê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
hơ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.
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
Control
Name
Caption
Command Button
ClearButton
Clear
Command Button
CancelButton
Cancel
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:
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
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.
5. 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

Cells(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ả:


×