Dùng biểu mẫu trong VBA cho bạn một canvas trống để thiết kế, sắp xếp biểu mẫu phù hợp với nhu cầu bất kỳ lúc nào. Hãy cùng Download.vn học cách tạo biểu mẫu nhập liệu tự động trong Excel VBA nhé!
Tạo một biểu mẫu người dùng bằng Excel VBA
Mở một workbook Excel mới và thực hiện vài bước sơ bộ trước khi bắt đầu tạo biểu mẫu nhập dữ liệu.
Lưu workbook bằng tên mong muốn, đừng quên đổi kiểu file sang Excel Macro-Enabled Workbook.
Thêm 2 sheet vào workbook này với các tên sau:
- Sheet1: Home
- Sheet2: Student Database
Tất nhiên, bạn có thể thay đổi tên của chúng như ý muốn.
Trong sheet Home, thêm nút điều khiển macro biểu mẫu của người dùng. Tới tab Developer > click Button từ danh sách Insert thả xuống. Đặt nút bấm này vào vị trí bất kỳ trên bảng tính.
Sau khi đặt nút bấm, đổi lại tên cho nó. Click chuột phải vào nó > nhấn New để gắn một macro hiển thị biểu mẫu.
Nhập code sau vào cửa sổ trình chỉnh sửa:
Sub Button1_Click()
UserForm.Show
End Sub
Khi sheet Home và Student Database sẵn sàng, giờ là lúc thiết kế biểu mẫu người dùng. Điều hướng tới tab Developer > click Visual Basic để mở Editor. Ngoài ra, bạn có thể nhấn ALT+F11 để mở cửa sổ trình chỉnh sửa.
Click tab Insert và chọn UserForm. Một biểu mẫu cho người dùng đã sẵn sàng được sử dụng. Một toolbox đi kèm mở ra cùng biểu mẫu này, chứa tất cả công cụ cần thiết cho thiết kế bố cục.
Từ toolbox này, chọn Frame. Kéo nó sang biểu mẫu người dùng và chỉnh lại kích thước của nó.
Trong (name), bạn có thể thay đổi tên của khung này. Để hiện tên ở front-end, bạn có thể thay đổi tên trong cột Caption.
Tiếp theo, chọn Label từ toolbox và chèn 2 nhãn dán trong khung này. Đổi lại tên đầu tên là Application Number và thứ hai là Student ID.
Áp dụng quy trình đổi tên tương tự qua Caption trong Properties. Đảm bảo bạn chọn nhãn tương ứng trước khi đổi tên của nó.
След това поставете 2 текстови полета в полето за стикери. Те ще се използват за улавяне на въведените от потребителите данни. Променете имената на 2-те текстови полета чрез колоната (Име) в Свойства , както следва:
- Textbox1 : txtApplicationNo
- Textbox2 : txtStudentID
Проектиране на информационна рамка за студенти
Вмъкнете вертикална рамка и добавете 10 етикета и 10 текстови полета. Преименувайте етикета, както следва:
- Етикет3 : Име
- Етикет 4 : Възраст
- Етикет5 : Адрес
- Етикет6 : Телефон
- Етикет7 : Град
- Label8 : Държава
- Етикет9 : Дата на раждане
- Етикет 10 : Пощенски код
- Етикет 11 : Националност
- Етикет 12 : Пол
Вмъкнете съответното текстово поле до тези етикети, вмъквайки от две полета с бутони за опции от кутията с инструменти на потребителската форма до етикета за пол. Променете имената им съответно на мъжки и женски (с персонализирано).
Проектирайте подробна рамка на курса
Добавете друга рамка вертикално и поставете 6 стикера, 6 текстови полета, съответстващи на всеки етикет. Преименувайте стикера, както следва:
- Етикет13 : Име на курса
- Етикет14 : ID на курса
- Етикет15 : Начална дата на записване
- Етикет16 : Крайна дата на записване
- Етикет17 : Продължителност на курса
- Етикет18 : Отдел
Дизайн на рамка с подробности за плащането
Вмъкнете нова рамка, добавете нов етикет и го преименувайте „Желаете ли да актуализирате данните за плащане?“ Вмъкнете 2 бутона за опции ; преименувайте ги на Да и Не .
По същия начин добавете нова рамка, съдържаща 2 допълнителни етикета и 2 комбинирани полета. Преименувайте етикета, както следва:
- Етикет19 : Плащането е получено
- Етикет20 : Начин на плащане
Дизайн на навигационно табло
В последния кадър добавете 3 бутона от кутията с инструменти, съдържащи код за разгръщане на формулярите. Преименувайте бутоните, както следва:
- Бутон1 : Запазване на подробностите
- Бутон2 : Изчистване на формуляра
- Бутон3 : Изход
Напишете автоматичен код на формуляр: Бутон за запазване на информация
Щракнете два пъти върху бутона Запазване на подробностите . В следващия модул вмъкнете следния код:
Private Sub CommandButton2_Click()
‘declare the variables used throughout the codes
Dim sht As Worksheet, sht1 As Worksheet, lastrow As Long
'Add validations to check if character values are being entered in numeric fields.
If VBA.IsNumeric(txtApplicationNo.Value) = False Then
MsgBox "Only numeric values are accepted in the Application Number", vbCritical
Exit Sub
End If
If VBA.IsNumeric(txtStudentID.Value) = False Then
MsgBox "Only numeric values are accepted in the Student ID", vbCritical
Exit Sub
End If
If VBA.IsNumeric(txtAge.Value) = False Then
MsgBox "Only numeric values are accepted in Age", vbCritical
Exit Sub
End If
If VBA.IsNumeric(txtPhone.Value) = False Then
MsgBox "Only numeric values are accepted in Phone Number", vbCritical
Exit Sub
End If
If VBA.IsNumeric(Me.txtCourseID.Value) = False Then
MsgBox "Only numeric values are accepted in Course ID", vbCritical
Exit Sub
End If
'link the text box fields with the underlying sheets to create a rolling database
Set sht = ThisWorkbook.Sheets("Student Database")
'calculate last populated row in both sheets
lastrow = sht.Range("a" & Rows.Count).End(xlUp).Row + 1
'paste the values of each textbox into their respective sheet cells
With sht
.Range("a" & lastrow).Value = txtApplicationNo.Value
.Range("b" & lastrow).Value = txtStudentID.Value
.Range("c" & lastrow).Value = txtName.Value
.Range("d" & lastrow).Value = txtAge.Value
.Range("e" & lastrow).Value = txtDOB.Value
.Range("g" & lastrow).Value = txtAddress.Value
.Range("h" & lastrow).Value = txtPhone.Value
.Range("i" & lastrow).Value = txtCity.Value
.Range("j" & lastrow).Value = txtCountry.Value
.Range("k" & lastrow).Value = txtZip.Value
.Range("l" & lastrow).Value = txtNationality.Value
.Range("m" & lastrow).Value = txtCourse.Value
.Range("n" & lastrow).Value = txtCourseID.Value
.Range("o" & lastrow).Value = txtenrollmentstart.Value
.Range("p" & lastrow).Value = txtenrollmentend.Value
.Range("q" & lastrow).Value = txtcourseduration.Value
.Range("r" & lastrow).Value = txtDept.Value
End With
sht.Activate
'determine gender as per user's input
If optMale.Value = True Then sht.Range("g" & lastrow).Value = "Male"
If optFemale.Value = True Then sht.Range("g" & lastrow).Value = "Female"
'Display a message box, in case the user selects the Yes radio button
If optYes.Value = True Then
MsgBox "Please select the payment details below"
Else:
Exit Sub
End If
End Sub
Обяснение на кода в автоматизирана форма:
Текстовите полета включват текстови и числови стойности, така че трябва да ограничите въвеждането на потребителя. Номерът на кандидатурата, ID на ученика, възрастта, телефонът, ID на курса и продължителността на курса ще съдържат само числа, останалите ще съдържат текст.
Използвайки командата IF , кодът задейства изскачащ прозорец за грешка, ако потребителят въведе знак или текстова стойност в което и да е числово поле.
Тъй като има валидиране на грешки, трябва да свържете текстовите полета с клетките в работния лист.
Променливите lastrow изчисляват последния попълнен ред и съхраняват стойността вътре за гъвкава употреба.
Накрая тези стойности се поставят в текстовото поле в свързания лист на Excel.
Кодирайте бутона за изчистване на формуляра и изход
В бутона за изчистване трябва да напишете код, който изчиства текущите стойности от формуляра на потребителя, както следва:
With Me
.txtApplicationNo.Value = ""
.txtStudentID.Value = ""
..txtName.Value = ""
.txtAge.Value = ""
.txtAddress.Value = ""
.txtPhone.Value = ""
.txtCity.Value = ""
.txtCountry.Value = ""
.txtDOB.Value = ""
.txtZip.Value = ""
.txtNationality.Value = ""
.txtCourse.Value = ""
.txtCourseID.Value = ""
.txtenrollmentstart.Value = ""
.txtenrollmentend.Value = ""
.txtcourseduration.Value = ""
.txtDept.Value = ""
.cmbPaymentMode.Value = ""
.cmbPayment.Value = ""
.optFemale.Value = False
.optMale.Value = False
.optYes.Value = False
.optNo.Value = False
End With
В бутона за изход въведете следния код във формуляра на потребителя:
Private Sub CommandButton5_Click()
Unload Me
End Sub
В последната стъпка трябва да въведете последните няколко парчета код, за да създадете падащите стойности за комбинираното поле (в рамката за плащане).
Private Sub UserForm_Activate()
With cmbPayment
.Clear
.AddItem ""
.AddItem "Yes"
.AddItem "No"
End With
With cmbPaymentMode
.Clear
.AddItem ""
.AddItem "Cash"
.AddItem "Card"
.AddItem "Check"
End With
End Sub
По-горе е как да създадете автоматичен формуляр за въвеждане на данни в Excel VBA . Надяваме се, че статията е полезна за вас.