Excel VBA: Làm mới nội dung vùng nhập dữ liệu

Đây là Seri bài viết hướng dẫn việc ứng dụng VBA trong quản lý nội dung trong bảng danh sách (danh sách hàng hóa, danh sách nhân viên…), gồm 5 phần:

Sau đây chúng ta cùng tìm hiểu nội dung của phần 1 qua bài tập sau:

Cho bảng dữ liệu về Danh sách nhân viên như hình bên dưới:

 

Yêu cầu:

  • Tạo nút lệnh Tạo mới để làm mới vùng nhập nội dung A3:A5 (Nút lệnh Tạo mới)
  • Kết hợp việc khóa sheet để không cho phép tự ý thay đổi nội dung trong bảng

Cách làm:

Đây là một dạng cơ bản của cấu trúc bảng quản lý theo danh sách, cụ thể là danh sách nhân viên.

Thay vì tạo UserForm trong VBA thì chúng ta có thể tạo trực tiếp form ở trong cùng Sheet với bảng danh sách. Khi đó việc Thêm + Sửa + Xóa nội dung ở bảng Danh sách nhân viên sẽ có thể thực hiện 1 cách dễ dàng, nhanh chóng.

1. Phân tích yêu cầu bài toán

  • Cho phép nhập dữ liệu vào các ô B3 (mã nhân viên), B5 (họ tên), D3 (ngày sinh), D5 (bộ phận) khi sheet đang ở trạng thái khóa (Protect sheet). Ngoài ra các vị trí khác không được thay đổi.
  • Dùng VBA để lấy dữ liệu được nhập ở các ô B3, B5, D3, D5 vào bảng danh sách (thêm vào dòng tiếp theo ở dưới cùng trong bảng) => Sau khi thêm dữ liệu vào bảng thì vẫn giữ nguyên trạng thái khóa bảng (lưu tự động bằng lệnh Lưu)
  • Dùng VBA để xóa dữ liệu ở các ô B3, B5, D3, D5 (xóa tự động bằng lệnh Tạo mới)

2. Cách thực hiện lệnh Tạo mới

  • Mở cửa sổ VBA (phím tắt Alt + F11)
  • Tạo mới 1 Module > Trong Module đó tạo mới 1 Sub lấy tên là Lenh_Tao_Moi
  • Ghi chú các nội dung cần thực hiện trong sub này như sau
  • Vì toàn bộ nội dung được thực hiện tại Sheet1, nên chúng ta có thể sử dụng câu lệnh

With Sheet1

End with

Do đó khi các câu lệnh khác đặt trong With Sheet1 thì chúng ta không cần nhắc lại tên sheet nữa

  • Lệnh mở khóa sheet được viết dưới dạng:

Tên sheet.Unprotect

  • Lệnh xóa nội dung của 1 vùng được viết dưới dạng

Tên sheet.Vùng cần xóa.ClearContents

Ở đây vùng cần xóa là các ô B3, B5, D3, D5

Vì ô B4 và D4 không có nội dung gì, nên chúng ta có thể gộp B3 và B5 thành B3:B5; gộp D3 và D5 thành D3:D5

=> Chúng ta có câu lệnh sau:

Tên Sheet.Range(“B3:B5”).ClearContents

Tên Sheet.Range(“D3:D5”).ClearContents

  • Lệnh khóa sheet được viết dưới dạng

Tên Sheet.Protect

Như vậy khi đưa vào trong cùng 1 Sub thì ta có toàn bộ câu lệnh như sau:

Đừng bỏ qua: lớp học VBA ở Hà Nội

3. Thiết lập định dạng cho các vùng nhập dữ liệu

Tại những ô cho phép nhập dữ liệu khi sheet ở chế độ khóa thì chúng ta cần phải định dạng (Format Cells) cho những ô đó ở chế độ không khóa (Format Cells > Protection > Bỏ dấu chọn ở mục Locked)

4. Gán Macro vào nút lệnh Tạo mới

  • Vẽ nút lệnh Tạo mới bằng chức năng Insert > Shapes > Vẽ 1 hình chữ nhật > Định dạng nội dung trong hình theo ý muốn, đặt tên (edit text) thành Tạo mới
  • Click chuột phải vào nút lệnh Tạo mới, chọn Assign Macro
  • Chọn Macro Lenh_Tao_Moi rồi bấm ok

Chúng ta kiểm tra thử nút lệnh vừa tạo bằng cách Nhập dữ liệu vào các ô B3, B5, D3, D5 rồi bấm lệnh Tạo mới xem thế nào nhé.

Chúc các bạn thành công!

Đón xem bài sau: Phần 2: Tạo nút lệnh lưu dữ liệu từ vùng Nhập dữ liệu vào Bảng kê danh sách nhân viên.

Cùng Học Excel Online khám phá thế giới của Excel VBA nào!

VBA có rất nhiều ứng dụng, giúp ích rất nhiều trong công việc: giúp bạn tăng tốc trong quá trình xử lý trên Excel, giúp lập các báo cáo tự động, điều khiển các chương trình khác như Word, Power Point, Outlook … giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp …

Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống Học Excel Online. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Chi tiết xem tại: