Cách sử dụng thuộc tính Select VBA để chọn phạm vi các ô Excel
Trong bài tập này mình sẽ hướng dẫn các bạn cách sử dụng thuộc tính Select trong VBA, đây là thuộc tính của đối tượng Range, Cells và Rows, được dùng để chọn một phạm vi.
Đề bài: Thay vì sử dụng chuột để tạo và chọn một phạm vi các ô trong Excel thì hãy sử dụng code VBA để thay thế.
Khi làm việc với Excel thì ta sẽ thao tác với phạm vi thông qua con trỏ chuột. Nhưng khi lập trình tự động với VBA thì mọi thứ phải thông qua code, vì vây ta sẽ sử dụng thuộc tính Select.
1. Chọn một ô đơn bằng VBA
Bạn có thể chọn một ô tính worksheet của Excel bằng cách sử dụng một trong hai đối tượng Range và Cells. Như ví dụ dưới đây dùng để chọn ô A2.
Bài viết này được đăng tại [free tuts .net]
Range("A2").Select '' hoặc Cells(2, 1).Select
Kết quả như sau:
2. Chọn một dãy ô Excel bằng VBA
Để chọn một dãy ô thì ta phải sử dụng phương thức Range, nó sẽ trả về danh sách các ô mà bạn bạn đã chọn dựa vào công thức truyền vào.
Ví dụ dưới đây mình chọn ô từ A1 đến D10.
Range("A1:C5").Select
Kết quả:
3. Chọn một dãy ô không liền kề bằng VBA
Trong Excel, để chọn một dãy ô không liền kề thì ta phải sử dụng kết hợp con trỏ chuột và phím với phí Ctrl, nghĩa là nhấn giữ phím Ctrl và chọn thêm ô khác.
Còn trong VBA thì ta sẽ sử dụng toán tử hợp (dấu phẩy) ,
để nối các dãy với nhau. Đây cũng chính là công thức Excel đấy các bạn.
Ví dụ dưới đây mình đã chọn các ô A1, C1 và E1.
Range("A1, C1, E1").Select
Đương nhiên bạn cũng có thể tạo ra một phạm vi tham vì một ô đơn như trên. Ví dụ này chọn dãy A1:A9 và B1:B18.
Range("A1:A9, B11:B18").Select
4. Chọn tất cả các ô bằng VBA
Trong VBA, đối tượng Cells chứa tất cả các ô tính (cell), vì vậy ta chỉ cần sử dụng thuộc tính Select của nó là được.
Cells.Select
5. Chọn một Row bằng VBA
Trong VBA, đối tượng Rows chứa tất cả các row của trang tính Excel mà bạn đang làm việc. Ví dụ này mình chọn hàng thứ nhất.
Rows(1).Select
6. Chọn một Column bằng VBA
Trong VBA, đối tượng Columns chứa toàn bộ các cột của trang tính Excel. Ví dụ dưới đây mình chọn cột thứ nhất.
Columns(3).Select
7. Chọn ô có dữ liệu cuối cùng của một phạm vi
Giả sử ta có bảng dữ liệu như sau.
Đoạn code sau sẽ tham chiếu đến ô B3.
Range(B3)
Mình muốn dựa vào ô B3 này lấy các ô dữ liệu không trống cuối cùng ở 4 hướng:
- Bên trên
- Bên trái
- Bên phải
- Phía dưới
Tức là các ô sẽ được chọn như ở hình sau:
Bạn có thể sử dụng VBA để thực hiện việc này và phương thức Range.End.
Phương thức Range.End có thể nhận bốn đối số là:
- xlToLeft hướng bên trái (hàng)
- xlToRight hướng bên phải (hàng)
- xlUp hướng lên trên (cột)
- xlDown hướng xuống dưới (cột)
Như yêu cầu ở ví dụ trên thì ta code trong VBA như sau (lưu ý là chạy từng lệnh nhé):
Private Sub CommandButton1_Click() Range("A1").End(xlDown).Select Range("A1").End(xlToLeft).Select Range("A1").End(xlToRight).Select Range("A1").End(xlUp).Select End Sub
8. Chọn một ô với thuộc tính Offset
Thuộc tính Offset dùng để chọn một ô dựa vào vị trí của một ô khác.
Ví dụ: Chọn ô B2 xuất phát từ vị trí A1
Range("A1").Offset(1, 1).Select
Như ta thấy, xuất phát từ A1 thì ô B2 sẽ nhảy qua một column và nhảy xuống một row nên hai giá trị truyền vòa là Offset(1, 1).
9. Chọn dãy ô ở một Sheet nào đó
Mặc định thì Range sẽ trả về phạm vi của sheet đang active, vì vậy để chọn ở sheet nào thì ta phải active sheet đó trước, sau đó mới sử dụng hàm Range.
Worksheets("Sheet5").Activate Range("A1").Select
Trên là tổng hơp 9 cách sử dụng Range, Cells, Rows và Columns trong VBA để tạo vùng chọn Excel.
Danh sách bài tập
- Thiết lập giá trị cho một ô Excel bằng VBA
- Thiết lập công thức cho các ô Excel bằng VBA
- Viết thủ công thêm sự kiện click vào một Button VBA
- Thực hành Cut- Copy - Paste các ô Excel bằng VBA
- Cách sử dụng thuộc tính Select VBA để chọn phạm vi các ô Excel
- Sử dụng Offset trong VBA để chọn một ô hoặc dãy ô Excel
- Thuộc tính Resize Range trong VBA - thay đổi kích thước của phạm vi