Trong bài chia sẻ này, giaoan.link chia sẻ đến các bạn về EXCEL Biểu mẫu nhập liệu – Data Entry Form. Các bạn tạo một biểu mẫu trên excel với các trường theo yêu cầu, sử dụng VBA để chuyển dữ liệu qua một sheet khác.
Nhập liệu trên Sheet Form, dữ liệu lưu trên Sheet Data
Cách tạo biểu mẫu kích hoạt macro trong trang tính Excel
Trong bài đăng này, chúng ta sẽ thảo luận về một biểu mẫu nhập dữ liệu tự động được phát triển trong Excel và VBA. Đây là biểu mẫu đơn giản để chứng minh cách bạn có thể chuyển dữ liệu từ biểu mẫu sang trang tính. Sử dụng cùng một loại mã và kỹ thuật, bạn có thể phát triển một biểu mẫu phức tạp để chuyển và đối chiếu dữ liệu trong trang tính Excel.
Dưới đây là ảnh chụp nhanh của biểu mẫu:
Biểu mẫu nhập liệu
Hãy thiết kế mẫu này từ đầu.
- Mở ứng dụng Excel
- Tạo một sổ làm việc mới
- Lưu sổ làm việc dưới dạng Tao form nhap lieu.xlsm (đã bật macro)
- Đổi tên Sheet1 thành Form
- Thêm một Sheet khác và đổi tên nó thành Data
- Thêm tên của Cột (STT, Ho va Ten, Gioi tinh, Chuyen mon, Huyen, Tinh, Quoc gia) trong phạm vi A1: G1 trong Bảng dữ liệu
- Sử dụng bảng này để lưu trữ dữ liệu sẽ được chuyển qua từ Form nhập liệu
- Hãy tạo biểu mẫu với Điều khiển ActiveX có sẵn trong Tab “Deverloper” trong nhóm “ActiveX Control”
- Bạn tạo ra một Form như trên bằng: Label, Combo box, Radio button,….
- Bạn Chọn Sheet “Form”, chọn “View code” trên tab “Deverloper”
- Copy và paste đoạn code sau vào:
Function ValidateForm() As Boolean
txtHoten.BackColor = vbWhite
cmbTrinhdo.BackColor = vbWhite
txtHuyen.BackColor = vbWhite
txtTinh.BackColor = vbWhite
txtQuocgia.BackColor = vbWhite
ValidateForm = True
If Trim(txtHoten.Value) = "" Then
MsgBox "Ho va Ten khong the de trong.", vbOKOnly + vbInformation, "Ho va Ten"
txtHoten.BackColor = vbRed
txtHoten.Activate
ValidateForm = False
ElseIf optNam.Value = False And optNu.Value = False Then
MsgBox "Vui long chon gioi tinh.", vbOKOnly + vbInformation, "Gioi tinh"
ValidateForm = False
ElseIf cmbTrinhdo.Text <> "12/12" And cmbTrinhdo.Text <> "Nghe" And _
cmbTrinhdo.Text <> "Cao dang" And cmbTrinhdo.Text <> "Dai hoc" Then
MsgBox "Vui long chon Trinh do chuyen mon theo danh sach.", vbOKOnly + vbInformation, "Trinh do"
cmbTrinhdo.BackColor = vbRed
cmbTrinhdo.Activate
ValidateForm = False
ElseIf Trim(txtHuyen.Value) = "" Then
MsgBox "Ten Huyen noi ban o?.", vbOKOnly + vbInformation, "Huyen"
txtHuyen.BackColor = vbRed
txtHuyen.Activate
ValidateForm = False
ElseIf Trim(txtTinh.Value) = "" Then
MsgBox "Thanh pho noi ban song.", vbOKOnly + vbInformation, "Thanh pho"
txtTinh.BackColor = vbRed
txtTinh.Activate
ValidateForm = False
ElseIf Trim(txtQuocgia.Value) = "" Then
MsgBox "Ten quoc gia ban song.", vbOKOnly + vbInformation, "Quoc gia"
txtQuocgia.BackColor = vbRed
txtQuocgia.Activate
ValidateForm = False
End If
End Function
Function Reset()
Application.ScreenUpdating = False
txtHoten.Value = ""
txtHoten.BackColor = vbWhite
optNam.Value = False
optNu.Value = False
cmbTrinhdo.Text = ""
cmbTrinhdo.BackColor = vbWhite
txtHuyen.Value = ""
txtHuyen.BackColor = vbWhite
txtTinh.Value = ""
txtTinh.BackColor = vbWhite
txtQuocgia.Value = ""
txtQuocgia.BackColor = vbWhite
Application.ScreenUpdating = True
End Function
- Copy và paste mã sau cho button “Reset”
Private Sub cmdReset_Click()
Dim i As Integer
i = MsgBox("Ban co muon dien lai thong tin?", vbQuestion + vbYesNo + vbDefaultButton2, "Form Reset")
If i = vbYes Then
Call Reset
End If
End Sub
- Copy và paste mã sau cho button “Save”
Private Sub cmdSave_Click()
Application.ScreenUpdating = False
Dim iRow As Long
iRow = Sheets("Data").Range("A1048576").End(xlUp).Row + 1
If ValidateForm = True Then
With ThisWorkbook.Sheets("Data")
.Range("A" & iRow).Value = iRow - 1
.Range("B" & iRow).Value = txtHoten.Value
.Range("C" & iRow).Value = IIf(optNam.Value = True, "Nam", "Nu")
.Range("D" & iRow).Value = cmbTrinhdo.Text
.Range("E" & iRow).Value = txtHuyen.Value
.Range("F" & iRow).Value = txtTinh.Value
.Range("G" & iRow).Value = txtQuocgia.Value
End With
Call Reset
Else
Application.ScreenUpdating = True
Exit Sub
End If
Application.ScreenUpdating = True
End Sub
- Nhấn CTRL + S để lưu mã và đóng cửa sổ VBA
- Trong Excel, thoát ra khỏi chế độ thiết kế và bắt đầu nhập dữ liệu vào trang tính ‘Form’ và nhấp vào “Save” để chuyển dữ liệu qua sheet “Data”