Trong bài này, tôi sẽ chỉ cách dùng thuộc tính UsedRange của VBA trong Excel. Bạn sẽ học dùng thuộc tính UsedRange cho phạm vi đóng, phạm vi rải rác, trang tính không hoạt động, và sổ làm việc không hoạt động.
Tải tệp này để thực hành khi đọc bài viết.
Giới thiệu thuộc tính UsedRange của VBA trong Excel
Thuộc tính UsedRange của VBA trả về đối tượng Range. Nó trả về phạm vi bao gồm tất cả ô trong trang tính đã được sử dụng bao gồm hàng trống ở đầu.
Trong mã VBA, thuộc tính UsedRange dùng cùng tên trang tính. Cú pháp chung dùng UsedRange cho trang tính hoạt động:
Dim Rng As Range
Set Rng = ActiveSheet.UsedRange
⧭ Lưu ý:
- Ở đây Rng là tên Range trả về bởi thuộc tính UsedRange. Bạn có thể dùng tên bất kỳ.
- Để dùng UsedRange trong trang tính khác trang hoạt động, dùng tên trang tính thay vào.
Ví dụ, áp dụng cho trang tính Sheet1, chèn:
Set Rng = Worksheets("Sheet1").UsedRange
4 cách dùng thuộc tính UsedRange của VBA trong Excel
Đây là 4 cách phổ biến nhất dùng thuộc tính UsedRange trong VBA.
1. Thuộc tính VBA UsedRange cho phạm vi đóng
Trước hết, dùng thuộc tính VBA UsedRange cho trang tính có phạm vi đóng.
Nó trả về toàn bộ phạm vi bao gồm hàng trống ở đầu.
Ở đây có trang tính Sheet1 chứa phạm vi đóng gồm tên, ngày vào làm, lương nhân viên công ty.
Giờ nếu dùng thuộc tính UsedRange trên trang tính này, nó trả về phạm vi B2:C13 (Bao gồm hàng trống ở đầu).
Nếu Sheet1 hoạt động, dùng:
Dim Rng As Range
Set Rng = ActiveSheet.UsedRange
Hoặc dùng:
Dim Rng As Range
Set Rng = Worksheets("Sheet1").UsedRange
⧭ Kết quả:
Chúng ta dùng thuộc tính Select của Range trong mã. Vì vậy, chạy mã sẽ chọn phạm vi B2:D13 của Sheet1.
Đọc thêm: Cách dùng Đối tượng Range của VBA trong Excel (5 thuộc tính)
2. Thuộc tính VBA UsedRange cho phạm vi rải rác
Nếu có phạm vi rải rác trong bất kỳ trang tính, thuộc tính UsedRange trả về phạm vi bao gồm ô trống ở giữa.
Giờ, trong Sheet1, có tổng lương, lương cao nhất, thấp nhất rải rác nhiều nơi, từ ô B3 đến G3.
Giờ dùng 2 dòng mã thuộc tính UsedRange.
Dim Rng As Range
Set Rng = ActiveSheet.UsedRange
Hoặc
Dim Rng As Range
Set Rng = Worksheets("Sheet1").UsedRange
⧭ Kết quả:
Trả về tất cả ô trong phạm vi B2:G3 của Sheet1 bao gồm ô trống (Bao gồm hàng trống ở đầu). Vì dùng thuộc tính Select của Range, nó chọn phạm vi B2:G3.
Đọc thêm: Cuối phạm vi dùng VBA trong Excel (Có ví dụ)
3. Thuộc tính VBA UsedRange cho trang tính không hoạt động
Nếu muốn dùng thuộc tính UsedRange trên trang tính không hoạt động, phải nhắc tên trang tính ở đầu.
Ví dụ, trang tính hoạt động là Sheet1.
Để dùng UsedRange trong Sheet2, dùng:
Dim Rng As Range
Set Rng = Worksheets("Sheet2").UsedRange
Sẽ chọn tất cả ô đã dùng trong trang tính Sheet2.
Đọc thêm: VBA thiết lập Range trong Excel (7 ví dụ)
4. Thuộc tính VBA UsedRange cho sổ làm việc không hoạt động
Thậm chí có thể dùng thuộc tính UsedRange cho sổ làm việc không hoạt động. Chỉ cần đặt tên sổ làm việc ở trước.
Ví dụ, sổ làm việc hoạt động là Workbook1. Để dùng UsedRange trên Sheet1 của Workbook2, dùng:
Dim Rng As Range
Set Rng = Workbooks("Workbook2.xlsm").Worksheets("Sheet1").UsedRange
Sẽ chọn phạm vi đã dùng của trang tính Sheet1 của Workbook2.
Đọc thêm: VBA cho từng ô trong Range trong Excel (3 phương pháp)
Lưu ý
Thuộc tính UsedRange của VBA trả về đối tượng Range. Ở bài này, dùng thuộc tính Select của Đối tượng Range để minh họa. Nhưng chắc chắn bạn có thể dùng bất kỳ thuộc tính Range nào tùy tiện.
Kết luận
Dùng các phương pháp này, bạn có thể dùng thuộc tính UsedRange trong Excel. Có câu hỏi? Hãy hỏi chúng tôi.
Bài viết liên quan
- Cách chọn Range dựa trên giá trị ô VBA (7 cách)
- VBA dùng Range dựa trên số cột trong Excel (4 phương pháp)
- Cách dùng VBA Range Offset (11 cách)
- VBA Range với số hàng biến đổi trong Excel (4 ví dụ)
- Cách đếm văn bản trong Excel (7 thủ thuật dễ dàng)