VBA - Biểu mẫu người dùng

A User Formlà một hộp thoại được tạo tùy chỉnh giúp cho việc nhập dữ liệu của người dùng dễ kiểm soát hơn và dễ sử dụng hơn cho người dùng. Trong chương này, bạn sẽ học cách thiết kế một biểu mẫu đơn giản và thêm dữ liệu vào excel.

Step 1- Điều hướng đến Cửa sổ VBA bằng cách nhấn Alt + F11 và Điều hướng đến Menu "Chèn" và chọn "Biểu mẫu người dùng". Sau khi chọn, biểu mẫu người dùng được hiển thị như trong ảnh chụp màn hình sau.

Step 2 - Thiết kế các biểu mẫu bằng cách sử dụng các điều khiển cho trước.

Step 3- Sau khi thêm mỗi điều khiển, các điều khiển phải được đặt tên. Chú thích tương ứng với những gì xuất hiện trên biểu mẫu và tên tương ứng với tên logic sẽ xuất hiện khi bạn viết mã VBA cho phần tử đó.

Step 4 - Sau đây là tên của từng điều khiển được thêm vào.

Điều khiển Tên lôgic Chú thích
Từ frmempform Mẫu nhân viên
Hộp nhãn ID nhân viên trống rỗng Mã hiệu công nhân
Hộp nhãn đầu tiên tên đầu tiên Tên đầu tiên
Họ tên Hộp nhãn họ Họ
Hộp nhãn dob dob Ngày sinh
Hộp nhãn mailid tài khoản mail ID email
Hộp Nhãn Hộ chiếu Người nắm hộ chiếu Người nắm hộ chiếu
Hộp văn bản ID trống txtempid KHÔNG Áp dụng
Hộp văn bản tên txtfirstname KHÔNG Áp dụng
Hộp văn bản họ txtlastname KHÔNG Áp dụng
Hộp văn bản ID email txtemailid KHÔNG Áp dụng
Hộp kết hợp ngày cmbdate KHÔNG Áp dụng
Hộp kết hợp tháng cmbmonth KHÔNG Áp dụng
Hộp kết hợp năm cmbyear KHÔNG Áp dụng
Có nút radio radioyes Đúng
Không có nút radio radiono Không
Nút gửi btnsubmit Gửi đi
Nút hủy btncancel Huỷ bỏ

Step 5 - Thêm mã cho sự kiện tải biểu mẫu bằng cách nhấp chuột phải vào biểu mẫu và chọn 'Mã Xem'.

Step 6 - Chọn 'Userform' từ các đối tượng thả xuống và chọn phương thức 'Initialize' như thể hiện trong ảnh chụp màn hình sau.

Step 7 - Khi Tải biểu mẫu, hãy đảm bảo rằng các hộp văn bản được xóa, các hộp thả xuống được lấp đầy và các nút Radio được đặt lại.

Private Sub UserForm_Initialize()
   'Empty Emp ID Text box and Set the Cursor 
   txtempid.Value = ""
   txtempid.SetFocus
   
   'Empty all other text box fields
   txtfirstname.Value = ""
   txtlastname.Value = ""
   txtemailid.Value = ""
   
   'Clear All Date of Birth Related Fields
   cmbdate.Clear
   cmbmonth.Clear
   cmbyear.Clear
   
   'Fill Date Drop Down box - Takes 1 to 31
   With cmbdate
      .AddItem "1"
      .AddItem "2"
      .AddItem "3"
      .AddItem "4"
      .AddItem "5"
      .AddItem "6"
      .AddItem "7"
      .AddItem "8"
      .AddItem "9"
      .AddItem "10"
      .AddItem "11"
      .AddItem "12"
      .AddItem "13"
      .AddItem "14"
      .AddItem "15"
      .AddItem "16"
      .AddItem "17"
      .AddItem "18"
      .AddItem "19"
      .AddItem "20"
      .AddItem "21"
      .AddItem "22"
      .AddItem "23"
      .AddItem "24"
      .AddItem "25"
      .AddItem "26"
      .AddItem "27"
      .AddItem "28"
      .AddItem "29"
      .AddItem "30"
      .AddItem "31"
   End With
   
   'Fill Month Drop Down box - Takes Jan to Dec
   With cmbmonth
      .AddItem "JAN"
      .AddItem "FEB"
      .AddItem "MAR"
      .AddItem "APR"
      .AddItem "MAY"
      .AddItem "JUN"
      .AddItem "JUL"
      .AddItem "AUG"
      .AddItem "SEP"
      .AddItem "OCT"
      .AddItem "NOV"
      .AddItem "DEC"
   End With
   
   'Fill Year Drop Down box - Takes 1980 to 2014
   With cmbyear
      .AddItem "1980"
      .AddItem "1981"
      .AddItem "1982"
      .AddItem "1983"
      .AddItem "1984"
      .AddItem "1985"
      .AddItem "1986"
      .AddItem "1987"
      .AddItem "1988"
      .AddItem "1989"
      .AddItem "1990"
      .AddItem "1991"
      .AddItem "1992"
      .AddItem "1993"
      .AddItem "1994"
      .AddItem "1995"
      .AddItem "1996"
      .AddItem "1997"
      .AddItem "1998"
      .AddItem "1999"
      .AddItem "2000"
      .AddItem "2001"
      .AddItem "2002"
      .AddItem "2003"
      .AddItem "2004"
      .AddItem "2005"
      .AddItem "2006"
      .AddItem "2007"
      .AddItem "2008"
      .AddItem "2009"
      .AddItem "2010"
      .AddItem "2011"
      .AddItem "2012"
      .AddItem "2013"
      .AddItem "2014"
   End With
   
   'Reset Radio Button. Set it to False when form loads.
   radioyes.Value = False
   radiono.Value = False

End Sub

Step 8- Bây giờ thêm mã vào nút Gửi. Khi nhấp vào nút gửi, người dùng sẽ có thể thêm các giá trị vào trang tính.

Private Sub btnsubmit_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 = txtempid.Value
   Cells(emptyRow, 2).Value = txtfirstname.Value
   Cells(emptyRow, 3).Value = txtlastname.Value
   Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
   Cells(emptyRow, 5).Value = txtemailid.Value
  
   If radioyes.Value = True Then
      Cells(emptyRow, 6).Value = "Yes"
   Else
      Cells(emptyRow, 6).Value = "No"
   End If
End Sub

Step 9 - Thêm phương thức đóng biểu mẫu khi người dùng nhấp vào nút Hủy.

Private Sub btncancel_Click()
   Unload Me
End Sub

Step 10- Thực hiện biểu mẫu bằng cách nhấp vào nút "Chạy". Nhập các giá trị vào biểu mẫu và nhấp vào nút 'Gửi'. Tự động các giá trị sẽ chảy vào trang tính như được hiển thị trong ảnh chụp màn hình sau.