Cách lấy thông tin trong bảng danh sách chỉ với 1 click chuột bằng VBA trong Excel

Đâ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 3 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

  • Lấy dữ liệu từ Bảng danh sách vào các ô nhập dữ liệu tương ứng mỗi khi click chuột vào dòng bất kỳ có chứa dữ liệu
  • Thực hiện việc này ngay khi sheet đang khóa

Cách làm

1. Phân tích yêu cầu

Bài tập này giúp chúng ta làm quen với các sự kiện xảy ra trong Work Sheet. Mỗi khi chúng ta làm một hành động gì trên Sheet thì đều có thể coi là 1 sự kiện: Thay đổi cell được chọn, thay đổi nội dung trong 1 cell, double click vào 1 vị trí…

Cụ thể trong trường hợp này chúng ta sẽ làm việc với sự kiện; Thay đổi cell được chọn, cụ thể hơn là:

  • Dòng chứa ô được chọn nằm trong vùng Bảng dữ liệu
  • Dòng này phải chứa nội dung, không phải dòng trống
  • Thực hiện sự kiện bao gồm việc đảm bảo sheet vẫn ở chế độ Protect (khóa sheet) mỗi khi kết thúc sự kiện

2. Cách thực hiện

Để thực hiện việc này, chúng ta cần chú ý một số vấn đề sau:

  • Lệnh xác định dòng được chọn
  • Lệnh lấy dữ liệu ở dòng được chọn để đưa vào nội dung các ô B3, B5, D3, D5 tương ứng theo từng cột

Trong VBA, lệnh xác định dòng được chọn là:

ActiveCell.Row

Lấy dữ liệu ở dòng được chọn vào các ô nhập dữ liệu như sau:

With Sheet1
.Cells(3, 2).Value = .Cells(a, 1).Value    ‘Ma nhan vien
.Cells(5, 2).Value = .Cells(a, 2).Value    ‘Ho ten
.Cells(3, 4).Value = .Cells(a, 3).Value    ‘Ngay sinh
.Cells(5, 4).Value = .Cells(a, 4).Value    ‘Bo phan
End With

Kết hợp với các thao tác Mở khóa, khóa sheet chúng ta có câu lệnh như sau:

Bước tiếp theo, chúng ta gán Sub này vào sự kiện Thay đổi trong Sheet1 như sau:

  • Double click vào Sheet 1 trong phần VBA Project
  • Chọn WorkSheet > SelectionChange

Trong sự kiện này, chúng ta cần thiết lập một số điều kiện như sau:

  • Dòng được chọn phải nằm trong bảng danh sách: cụ thể là số dòng phải >7
  • Dòng có chứa nội dung: Xét tới dòng cuối cùng có dữ liệu trong bảng danh sách <= Dòng cuối

 

Bây giờ chúng ta thử click vào dòng bất kỳ trong bảng Danh sách để kiểm tra xem lệnh VBA đã chạy đúng chưa nhé.

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

Đón xem bài sau: Phần 4: Xóa nội dung trong bảng danh sách

 


Tác giả: duongquan211287

· · ·

Khóa học mới xuất bản