Tạo form nhập dữ liệu trong Excel


Bạn đã quá quen thuộc với giao diện truyền thống nhập dữ liệu trực tiếp vào ô bảng tính của Excel. Giao diện này đơn giản và dễ sử dụng. Tuy nhiên, khi làm việc với bảng tính lớn, người nhập liệu thường phải tập trung cao độ để tránh nhập nhầm sang ô khác. Việc nhập liệu sẽ trở nên dễ dàng hơn nếu có thể dùng biểu (form) để nhập nội dung của từng bản ghi, sau đó nhấn nút xác nhận và nội dung đã nhập sẽ được chuyển đúng vào vị trí mong muốn trong bảng tính.
Bạn có thể tự tạo một form nhập liệu như thế với tiện ích Visual Basic Editor trong Excel. Bài viết sẽ này giới thiệu từng bước thao tác thực hiện.

Bảng tính của tôi gồm có các cột sản phẩm, mã sản phẩm và tên hãng cung ứng như hình 1. Thay vì nhập dữ liệu trực tiếp vào bảng tính theo cách thức truyền thống, tôi sẽ tạo một form nhập liệu như hình 2. Khi nhấn nút lệnh Enter thì dữ liệu sẽ được chuyển vào bảng tính, nghĩa là đã nhập xong dữ liệu cho một bản ghi. Một bản ghi trong bảng tính chiếm trọn một dòng, khi nhập xong một bản ghi thì khung selector phải di chuyển xuống hàng kế tiếp. Nút lệnh Exit dùng để chấm dứt việc nhập liệu.

 

Visual Basic Editor
Vào Tools•Macro. Visual Basic Editor như hình 3. Cửa sổ làm việc của VBE sẽ xuất hiện như hình 4. Vào menu Insert và chọn User Form như hình 5 chúng ta sẽ được một  form như trong hình 6.

 

Thiết kế form
Bây giờ ta làm cho form này trở thành giao diện để nhập liệu vào bảng tính. Từ hộp công cụ (toolbox), nhấn chuột vào nút công cụ TextBox như hình 7, con trỏ chuột lúc đó có dạng dấu chữ thập (+), dùng nó để tạo hộp văn bản bên trong form như hình 8.
Có một điều căn bản nên nhớ là khi mang một đối tượng điều khiển vào trong form, bạn phải đặt tên cho đối tượng đó. Đôi khi chúng ta còn phải gán thêm một vài thuộc tính khác nữa. Với đối tượng là hộp văn bản như trên, chỉ cần đặt tên cho nó là đủ. Bạn chú ý đến hộp thuộc tính của đối tượng như hình 9. Trong đó, thuộc tính Name chính là tên của đối tượng. Chưa xong, còn phải cung cấp cho form thêm hai hộp văn bản nữa. Bạn hãy gán tên cho TextBox2 và TextBox3 lần lượt là txtSanPham và txtHangCungUng.
Chỉ còn đặt thêm hai nút lệnh (CommandButton) vào trong form là hoàn tất việc thiết kế. Hình 10 chỉ vị trí của đối tượng nút lệnh trong hộp đồ nghề. Thực hiện tương tự như đã làm với đối tượng hộp văn bản. Chú ý đến dòng ký tự trên nút lệnh, đây là thuộc tính Caption của đối tượng. Bạn phải gán chuỗi ký tự mới thay cho Caption hiện tại.
Bạn có thể theo bảng sau đây để gán tên và Caption cho hai nút lệnh.
Đến đây việc thiết kế form xem như hoàn tất, hình thức như trong hình 13. Bây giờ bước cuối cùng là viết chương trình cho form.

 

Viết chương trình cho form
Từ vùng làm việc của VBE, vào menu View•Code. Bạn cũng có thể nhấn phím chức năng F7. Gõ vào đoạn mã sau:

 

Dim RecNum As Integer

Private Sub ShowCurrentRecord()

txtMaSanPham.Text = ActiveCell.Value

Selection.Offset(0,1).Select

txtSanPham.Text = ActiveCell.Value

Selection.Offset(0,1).Select

txtHangCungUng.Text = ActiveCell.Value

Selection.Offset(0,-2).Select

txtMaSanPham.SetFocus

End Sub

 

Private Sub cmdEnter_Click()

ActiveCell.Value= txtMaSanPham.Text

Selection.Offset(0,1).Select

ActiveCell.Value = txtSanPham.Text

Selection.Offset(0,1).Select

ActiveCell.Value= txtHangCungUng.Text

  Selection.Offset(0, -2).Select

   RecNum = RecNum + 1

  Selection.Offset(1).Select

ShowCurrentRecord

End Sub

Private Sub cmdExit_Click()

End

End Sub

Private Sub UserForm_Activate()

RecNum = 0

Range(“a2”).Select

While ActiveCell.Value <> “”

    RecNum = RecNum + 1

    Selection.Offset(1).Select

Wend

End Sub
Tôi đợi bạn 20 phút để gõ đoạn mã trên. Đừng vội, coi chừng nhầm chuỗi rỗng với chuỗi có một khoảng trắng! Bây giờ bạn đã gõ xong, hãy chạy thử xem. Bạn vào menu Run•Run Sub/UserForm. Bạn có thể nhập nội dung của mỗi trường của một bản ghi vào hộp văn bản, rồi nhấn chuột vào nút Enter. Bạn sẽ thấy nội dung của bản ghi đi vào bảng tính và sẵn sàng cho bản ghi tiếp theo. Chà! Form làm việc tốt rồi. Nhưng vẫn có thể làm cho nó tốt hơn nữa. Với form hiện tại, bạn chỉ có thể nhập dữ liệu mà thôi. Tôi sẽ mách bạn sử dụng đối tượng SpinButton của VBE để làm cho form của bạn có khả năng duyệt nội dung của những bản ghi đang hiện diện trong bảng tính.  Đợi chút, bạn đang chạy một macro, vậy hãy chấm dứt macro này trước khi làm bất cứ chuyện gì. Nhấn chuột vào nút lệnh Exit.

 

Đối tượng SpinButton
Bây giờ bạn đã trở về VBE. hình 14 chỉ vị trí của đối tượng SpinButton trong hộp công cụ. Bạn hãy đưa đối tượng này vào trong form như trong hình 15. Bạn cũng đừng quên đặt tên cho đối tượng này. Tên gì đây? Tạm gọi là spnUpDown.
Bây giờ bạn sẽ bổ sung chương trình cho đối tượng Spin. Bạn còn nhớ cách mở cửa sổ Code chứ? Dưới đây là đoạn chương trình mà bạn sẽ gõ vào.

 

Private Sub spnUpDown_SpinUp()

If Selection.Row <> 2 Then

    Selection.Offset(-1).Select

    ShowCurrentRecord

txtMaSanPham.SetFocus

End If

End Sub

Private Sub spnUpDown_SpinDown()

If Selection.Row <= RecNum + 1 Then

    Selection.Offset(1).Select

    ShowCurrentRecord

End If

txtMaSanPham.SetFocus

End Sub
Cho chạy macro này, nhấn chuột vào nút SpinButton để trắc nghiệm xem nó có làm việc đúng như ý muốn hay không.
Vậy là vấn đề đã được giải quyết. Có thể bạn muốn yêu cầu nhiều hơn với form trên, như nó phải có khả năng xoá cũng như chèn thêm một bản ghi vào vị trí hiện hành của selector trên bảng tính. Trong trường hợp này, xin bạn đừng ngần ngại liên lạc với tôi qua địa chỉ: vvhoc@yahoo.com.au.
Vũ Văn Học

In trang [In trang]    Đóng trang [Đóng trang]

© Tạp chí Thế Giới Vi Tính - PC World VN. CQ chủ quản: Sở Khoa Học và Công Nghệ TP.HCM
Giấy phép (1) số 196/GP-BVHTT do Bộ Văn hóa Thông tin cấp ngày 27-06-2003
Giấy phép (2) số 202/GP-BC do Bộ Thông tin và Truyền thông - Cục Báo chí cấp ngày 05-05-2008
Tòa soạn: Lầu 5, 79 Trương Định, Phường Bến Thành, Quận 1, TP. HCM - ĐT: (08) 38 257 745
Bản quyền của Thế Giới Vi Tính - PC World VN