25/05/2018, 23:32

Tự động tô màu vùng được chọn với sự kiện SelectionChange

Để có thể tự động chạy Macro khi có sự thay đổi trong Sheet, chúng ta cần tìm hiểu về cách thiết lập sự kiện: Worksheet Change Event trong VBA. Với kỹ thuật này chúng ta có thể kiểm soát các câu lệnh VBA để có thể tự động sử dụng khi chúng ta thực hiện một thao tác nào đó trong Sheet, ví dụ như: ...

Để có thể tự động chạy Macro khi có sự thay đổi trong Sheet, chúng ta cần tìm hiểu về cách thiết lập sự kiện: Worksheet Change Event trong VBA. Với kỹ thuật này chúng ta có thể kiểm soát các câu lệnh VBA để có thể tự động sử dụng khi chúng ta thực hiện một thao tác nào đó trong Sheet, ví dụ như: Tự động cập nhật báo cáo khi thay đổi thời gian của báo cáo, tự động cập nhật nội dung khi Thay đổi dữ liệu tại 1 vị trí… Đây là một kỹ thuật rất hữu ích giúp chúng ta tự động hóa quy trình làm việc của Excel.

Phần 1: Sự kiện Selection_Change

Tác dụng: Khi chọn tới 1 Cell khác thì sẽ thực hiện lệnh VBA

Cách làm: Mở cửa sổ VBA, trong cửa sổ VBA chúng ta thực hiện như sau:

Bước 1: Double Click để chọn Sheet cần áp dụng sự kiện

Bước 2: Chọn mục WorkSheet

Bước 3: Chọn sự kiện trong Worksheet là SelectionChange (Sau khi thực hiện bước 2 sẽ tự động ra sự kiện này)

Ví dụ: Tô màu tại ô mới được chọn trong vùng từ A1:Z1000

View the code on Gist.

Trình tự của sự kiện như sau:

  • Mục đích: Tô màu tại vị trí ô mới được chọn => Ô mới được chọn là Target (là biến mặc định trong các Sự kiện)
  • Khi tô màu vị trí ô mới được chọn thì phải bỏ tô màu ở ô đã chọn trước đó => Để đảm bảo duy nhất có 1 ô được tô màu => Phải bỏ tô màu toàn bộ vùng trước, sau đó mới tô màu ô được chọn.
  • Record Macro cho 2 lệnh Tô màu và Hủy tô màu nền
  • Đặt các Macro vào đúng trình tự

=> Khi click chọn vào vị trí bất kỳ trong Sheet1 thì ô được chọn sẽ tô màu nền là màu vàng (Nếu chọn 1 Range thì cả Range đó sẽ được tô màu nền)

Tải về file ví dụ: http://bit.ly/2BeFSoc

Ứng dụng nâng cao: Tự động tô màu (highlight) của dòng được chọn trong bảng

Chúc các bạn học tốt cùng Học Excel Online

0