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: Phần 1: Làm mới nội dung vùng nhập dữ liệu Phần 2: Thêm mới nội dung vào danh sách Phần 3: Lấy thông tin bất kỳ trong bảng danh sách vào ...
Đâ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:
- Phần 1: Làm mới nội dung vùng nhập dữ liệu
- Phần 2: Thêm mới nội dung vào danh sách
- Phần 3: Lấy thông tin bất kỳ trong bảng danh sách vào form
- Phần 4: Xóa nội dung bất kỳ trong bảng danh sách
- Phần 5: Cập nhật nội dung từ Form vào bảng danh sách
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.
Xem ngay: lớp học Excel kế toán tại Hà Nội