Range có thể nói là đối tượng phổ biết nhất dùng trong VBA Excel, thế nhưng với nhiều người dùng thì đối tượng Range vẫn là điều gì đó khó áp dụng vào công việc. Qua bài viết này, Gitiho.com sẽ hướng dẫn các bạn cách code với đối tượng Range trong VBA Excel.
XEM NHANH BÀI VIẾT
Trong chương trình Excel, đối tượng Range được hiểu là một ô hoặc một vùng ô trong Excel. Còn trong VBA sẽ có 2 dạng để biểu diễn đối tượng Range.
Dạng này sẽ dùng trong trường hợp bạn không tìm được vùng cần làm việc là vùng nào, dòng bao nhiêu, cột nào bởi một trong những vùng này đã bị thay đổi trong quá trình thì bạn buộc phải thông qua các biến. Để xác định vùng mà bạn muốn làm việc thì mỗi khi một câu lệnh có biến đổi bất kỳ thì sẽ nhận một giá trị.
Sau đây là cách sử dụng.
Lưu ý: Dạng này chỉ dùng cho 1 ô hoặc một dãy ô liên tiếp nhau.
Dạng này sử dụng một khi đã xác định được toạ độ của các dòng, cột vùng ô đó.
Sau đây là cách dùng của dạng này.
Phần đông người sử dụng sẽ chọn dạng số 2 này bởi ngoài chọn 1 hoặc nhiều ô thì nó còn có thể chọn các vùng ô liên tiếp nhau hoặc tách rời nhau. Ngoài ra ta cũng có thể dựa vào Cell để bổ trợ cho Range để viết dựa vào điểm đầu hoặc điểm cuối ô.
Xem thêm: Hướng dẫn cách lấy giá trị bên trong một ô bằng cách viết code với Range hoặc Cells
Range(“A1:A5”).EntireRow.Hidden = True
- Tức ẩn từ dòng 1 đến dòng 5.
Range(“A1:F1”).EntireColumn.Hidden = False
- Bỏ ẩn từ cột A tới cột F.
Range(“A2:D2”).Select
[A2:D2].Select
Range(“A1”).Value = “ xyz"
- Tức gán nội dung "xyz" vào ô A1.
Range(“A2:A5”).Value = Range(“B2:B5”).Value
- Tức lấy giá trị của vùng A2:A5 đúng theo giá trị của vùng B2:B5.
Range(“D5”).Formula = “=COUNTIF(D1:D4,””abc””)”
- Gán công thức =COUNTIF(D1:D4,”abc”) vào ô D5.
Range(“A2:A5”).EntireRow.Delete
- Xoá sạch dữ liệu từ dòng 2 tới dòng 5.
Range(“A1:F10”).Clear
- Quét sạch toàn bộ định dạng và dữ liệu trong phạm vi A1:F10.
Range(“A1:F10”).ClearContents
- Chỉ xoá dữ liệu trong phạm vi A1:F10.
Range(“A2:A5”).Delete
- Xoá hết các ô trong phạm vi A2:A5.
Xem thêm: Học ngay 2 cách để xóa công thức nhưng vẫn giữ nguyên kết quả trong Excel
Qua những ví dụ trên ta đã phần nào biết được những công dụng của Range trong VBA Excel. Vậy trong Worksheet hay Workbook thì sao? Thật ra Range chỉ là đối tượng nhỏ trong hai đối tượng lớn hơn là Worksheet hay Workbook.
Vì lí do này mà khi không nói rõ thuộc Worksheet, Workbook nào thì chúng ta ngầm hiểu Range trong Sheet đang hoạt động (Active Sheet), Sheet này thuộc Workbook đang hoạt động (Active Workbook).
Range(“A1”).ClearContents = ActiveWorkbook.ActiveSheet.Range(“A1”).ClearContents
Tuy nhiên việc Active Sheet thay đổi liên tục trong quá trình code trong Excel sẽ khiến cho dẫn tới kết quả sai. Điều này cũng sẽ tương tự với Active Workbook.
Ngoài ra nếu muốn nói một Range thuộc Sheet khác, ta cần phải nói cụ thể Sheet đó trước khi nhắc tới Range. Cùng với đó, nhắc tới Sheet đó thuộc Workbook khác thì cần chỉ rõ tên Workbook.
Ví dụ.
Sheet5.Range(“A2:A5”).Select
- Chọn phạm vi A2:A5 của Sheet 5 trong Workbook đang làm việc.
ThisWorkbook.Worksheets(1).Range(“VungDK”).ClearContents
- Xoá bỏ dữ liệu trong vùng đã được đặt tên (Define Name) là "VungDK". Vùng này nằm trong Sheet mang số thứ tự là 1 của Workbook nơi đặt lệnh code.
Với đối tượng Range, người sử dụng VBA Excel cần chú ý viết đầy đủ cả Workbook lẫn Worksheet . Chỉ riêng trường hợp của Workbook thì nên viết cụ thể tên sheet chứa Range cần sử dụng. Điều này để tránh nhầm lẫn, biết rõ vị trí kết quả và tránh việc chạy câu lệnh sai vùng Range sang sheet khác.
Qua bài viết này, Gitiho.com mong rằng các bạn đã nắm được những điều cơ bản về Range trong VBA Excel - một đối tượng thường xuyên sử dụng trong VBA Excel.
Khóa học phù hợp với bất kỳ ai đang muốn tìm hiểu lại Excel từ con số 0. Giáo án được Gitiho cùng giảng viên thiết kế phù hợp với công việc thực tế tại doanh nghiệp, bài tập thực hành xuyên suốt khóa kèm đáp án và hướng dẫn giải chi tiết. Tham khảo ngay bên dưới!