Monday, January 12, 2015

Form tùy chọn (Userform)

Add the Controls Show the Userform Assign the Macros Test the Userform

Chương này dạy bạn làm thế nào để tạo ra một VBA UserForm trong Excel. UserForm chúng ta sẽ tạo ra trông như sau:

Userform

UserForm Thêm Controls

Để thêm các điều khiển để UserForm, thực hiện các bước sau đây.

1. Mở Visual Basic Editor. Nếu Project Explorer không hiển thị, chọn View, Project Explorer.

2. Nhấn phím 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 nên được thiết lập như bên dưới.

Userform Screen Setup in Excel VBA

3. Thêm các điều khiển được liệt kê trong bảng dưới đây. Một khi điều này đã được hoàn thành, kết quả sẽ phù hợp với hình ảnh của UserForm thể hiện trước đó. Ví dụ, tạo ra một văn bản điều khiển hộp 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 UserForm. Khi bạn thiết kế, hãy nhớ để vẽ khung này đầu tiên trước khi bạn đặt hai nút tùy chọn trong đó.

4. 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ã Excel VBA. Tiêu đề là những người xuất hiện trên màn hình của bạn. Đó là thực hành tốt để thay đổi tên của điều khiển. Điều này sẽ làm cho mã của bạn dễ dàng hơn để đọc. Để thay đổi tên và chú thích của các điều khiển, bấm View, Properties Window và click vào từng điều khiển

Control Tên Nội dung
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.

Hiển thị Userform

Để hiển thị UserForm, đặt một nút lệnh trên bảng tính của bạn và thêm dòng mã sau đây:
Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub
Bây giờ chúng ta sẽ tạo ra các UserForm_Initialize Sub. Khi bạn sử dụng các phương pháp Hiện cho UserForm, phụ này sẽ được thực thi.
1. Mở Visual Basic Editor.
2. Trong dự án Explorer, nhấp chuột phải vào DinnerPlannerUserForm và sau đó nhấp vào Xem mã.
3. Chọn UserForm từ danh sách thả xuống bên trái. Chọn Initialize từ danh sách thả xuống bên phải.
4. 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 combo được lấp đầy, hộp kiểm tra là không được kiểm soát, vv
Gán các Macros
Chúng tôi đã tạo ra được phần đầu của UserForm. Mặc dù có vẻ sẵn sàng, nhưng khi chúng ta bấm vào các nút lệnh trên UserForm lại không có j xảy ra.
1. Mở Visual Basic Editor.
2. Trong dự án Explorer, nhấp đúp chuột vào DinnerPlannerUserForm.
3. Nhấp đúp chuột vào nút Money spin.
4. Thêm dòng code sau:
Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub
Giải thích: dòng code này cập nhật hộp văn bản khi bạn sử dụng nút Spin.
5. Nhấp đúp chuột vào nút OK.
6. 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 emptyRow. Các emptyRow biến là dòng trống đầu tiên và tăng lên mỗi lần một bản ghi được thêm vào. Cuối cùng, chúng tôi chuyển giao các thông tin từ các UserForm để các cột cụ thể của emptyRow.
7. Nhấp đúp chuột vào nút Clear.
8. Thêm dòng 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. Double click vào nút Cancel.
10. Thêm các dòng mã 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 nhãn hiển thị dưới đây vào dòng 1 và kiểm tra các UserForm.
Kết quả:
Test the Userform

2 comments:

  1. mình đang dùng MAcos , excel của mình chỉ có Insert -> Module / Class Module . Mình không tìm thấy Userform làm thế nào để chỉnh được đây

    ReplyDelete