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 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.
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
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
'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
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
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
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
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ả:
Great
ReplyDeletemì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