ActiveCell và Selection: Lấy cell đang chọn trong VBA
Trong bài này mình sẽ hướng dẫn cách lấy cell đang chọn trong VBA bằng cách sử dụng hai đối tượng ActiveCell và Selection trong VBA. Đây là thao tác thường sử dụng trong VBA vì nó giúp ta biết được ô tính nào đang ở trạng thái được chọn (selected).
Có hai trường hợp làm việc với vùng chọn, thứ nhất là lấy một ô đầu tiên và thứ hay là lấy tất cả các ô trong vùng chọn. Lưu ý rằng vùng chọn chính là vùng mà bạn đang chọn ở ngoài trang tính của Excel.
Trước tiên bạn hãy tạo một Command Button, sau đó chúng ta sẽ code VBA thực hành trên sự kiện click của button này nhé.
1. ActiveCell : Lấy một ô Excel đang được chọn
Giả sử bạn có một vùng chọn như sau:
Bài viết này được đăng tại [free tuts .net]
Bạn muốn láy ô A1 bằng VBA code thì có thể sử dụng Range("A1")
. Tuy nhiên, mình muốn ô A1 đó là linh động, nghĩa là khi ta di chuyển sang một vị trí khác thì code VBA vẫn lấy đúng ô đầu tiên đó.
Hoặc bạn muốn lấy một cell đang được chọn như sau:
Rất đơn giản, bạn hãy sử dụng đối tượng ActiveCell, một thành phần con của Application.
Application.ActiveCell ' hoặc ActiveCell
Ví dụ: Hãy code vào sự kiện click của button như sau.
Application.ActiveCell.Value = "Freetuts.net" ' hoặc ActiveCell.Value = "Freetuts.net"
Lưu lại, ra ngoài click vào button thì bạn thu được kết quả như sau.
2. Selection: Lấy tất cả các ô tính của vùng chọn
Trường hợp bạn muốn lấy tất cả các ô trong vùng chọn thì sử dụng đối tượng Selection, một đối tượng con của Application.
Application.Selection 'hoặc Selection
Ví dụ: Gán giá trị freetuts.net cho tất cả những ô được chọn khi click vào button ở phần 1.
Bạn hãy sửa lại đoạn code trong sự kiện click thành:
Application.Selection.Value = "Freetuts.net"
Kết quả như sau:
Trên là hai thao tác với vùng chọn thường gặp nhất khi bạn lập trình với VBA, đó là lấy một ô tính đang chọn đầu tiên và lấy tất cả ô tính đang được chọn trong Excel bằng ngôn ngữ VBA.