EXCEL Biểu mẫu nhập liệu – Data Entry Form

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”

Xem video hướng dẫn tạo Form nhập liệu tự động