Cách dùng đôi tượng Range trong VBA
Trong bài này mình sẽ giới thiệu đến đối tượng Range trong VBA, Range là đối tượng được sử dụng nhiều nhất khi lập trình VBA bởi nó giúp ta trao đổi dữ liệu cũng như thiết lập thuộc tính cho các cell.
Ở bài trước mình đã giới thiệu sơ lược về Workbook và Worksheet, và bạn cũng đã biết mỗi workbook chứa nhiều worksheet, mỗi worksheet chứa nhiều range. Và đúng ra mình muốn gộp nội dung bài này vào bài trước luôn, nhưng vì nó quá dài nên mình tách ra để các bạn đọc dễ hiểu hơn.
1. Range trong VBA là gì?
Range là đối tượng dùng để tham chiếu đến một vùng chọn trong Excel. Nếu trong Excel ta dùng chuột để tạo vùng chọn thì trong VBA lại khác, vì nó là ngôn ngữ máy tính nên cần sử dụng đối tượng Range.
Về cú pháp tham chiếu vùng chọn thì không khác gì trong Excel, ta vẫn sử dụng tham chiếu CộtHàng.
Bài viết này được đăng tại [free tuts .net]
Tham chiếu đến ô B3.
Range("B3")
Tham chiếu đến dãy ô từ A1 đến F10.
Range("A1:F10")
2. Cách sử dụng Range trong VBA
Ta sẽ làm một vài ví dụ để bạn hiểu rõ hơn về đối tượng này nhé.
Trước tiên hãy tạo một Command Buttons, sau đó viết những đoạn code sau trong sự kiện click của button đó.
Ví dụ 1: Thiết lập giá trị cho ô B3 là 2
Range("B3").Value = 2
Kết quả khi bạn click vào button như sau:
Ví dụ 2: Thiết lập giá trị cho dãy ô từ A1:A4
là 5
Range("A1:A4").Value = 5
Kết quả
Ví dụ 3: Thiết lập giá trụ của hai dãy A1:A2 và B3:C4 là 10
Range("A1:A2,B3:C4").Value = 10
Kết quả
Lưu ý: Nếu bạn đã đặt Named Range cho vùng chọn thì có thể sử dụng named range để thay thế.
Range("Prices").Value = 15
3. Kết hợp đối tượng Cells và Range
Ngoài cách sử dụng đối tượng Range thì bạn có thể sử dụng Cells để thay thế. Tham số truyền vào Cells là số thứ tự của hàng và cột.
Cells (Số thứ tự hàng, Số thứ tự cột)
Ví dụ 1: Thiết lập giá trị ô B3 là 2.
Ta thấy ô B3 thuộc hàng 3 và cột 2 nên cách làm như sau:
Cells(3, 2).Value = 2
Vi dụ 2: Thiết lập giá trị từ A1 đến A4 là 5.
- A1 thuộc hàng 1 cột 1 =>
Cells (1, 1)
- A4 thuộc hàng 4 cột 1 =>
Cells (4, 1)
Range(Cells(1, 1), Cells(4, 1)).Value = 5
Kết quả:
4. Khai báo một biến chứa đối tượng Range
Ta sử dụng từ khóa Dim và Set để khai báo một biến chứa đối tượng Range.
// Khai báo biến Example kiểu Range Dim example As Range // Thiết lập giá trị cho biến example Set example = Range("A1:C4") // Lúc này biến example chính là Range("A1:C4") example.Value = 8
Kết quả:
5. Phương thức Select của Range Object
Đối tượng Range có một phương thức tên là Select, khi chạy phương thức này thì nó giống như bạn dùng chuột để kéo vùng chọn vậy.
Ví dụ: Viết chức năng khi click vào Button thì tạo ra một vùng chọn A1:C4.
Dim example As Range Set example = Range("A1:C4") example.Select
Kết quả:
* Lưu ý: Để chọn các ô trên một trang tính khác thì trước tiên bạn phải kích hoạt trang tính đó.
Ví dụ: Các dòng code dưới đây chọn ô B7 trên trang tính thứ ba tính từ bên trái.
// Chọn trang tính Worksheets(3).Activate Worksheets(3).Range("B7").Select // Tạo vùng chọn Dim example As Range Set example = Range("A1:C4") example.Select
6. Phương thức Rows của Range
Phương thức Rows có một tham số truyền vào, đó chính là hàng mà bạn muốn chọn trong phạm vi của đối tượng Range.
Dim example As Range Set example = Range("A1:C4") example.Rows(3).Select
Kết quả:
Như bạn thấy, hàng thứ 3 đã được chọn và độ dài của nó nằm trong phạm vi của Range.
7. Phương thức Columns của Range
Tương tự như phương thức Rows, phương thức Columns sẽ có một tham số và đó chính là số thứ tự của hàng mà bạn muốn chọn trong phạm vi của Range.
Dim example As Range Set example = Range("A1:C4") example.Columns(2).Select
Kết quả:
8. Phương thức Copy và Paste của Range
Phương thức Copy dùng để copy một dãy range, và phương thức Paste dùng để dán vào một vị trí nào đó trong Worksheet.
Range("A1:A2").Select Selection.Copy Range("C3").Select ActiveSheet.Paste
Kết quả:
Mặc dù đoạn code trên chạy tốt trong Excel VBA, nhưng tốt hơn nữa là bạn nên sử dụng đoạn code bên dưới để thay thế.
Range("C3:C4").Value = Range("A1:A2").Value
8. Phương thức ClearContents của Range
Phương thức ClearContents dùng để xóa nội dung của Range.
Range("A1").ClearContents
Hoặc bạn cũng có thể sử dụng đoạn code sau để thay thế:
Range("A1").Value = ""
Sự khác biệt duy nhất giữa hai đoạn code trên là: ClearContents sẽ xóa nội dung và các định dạng format của vùng chọn, còn đoạn code thứ hai chỉ xóa nội dung mà thôi.
9. Phương thức Count của Range
Phương thức Count dùng để đếm tổng số các ô của range.
TH1: Đếm tổng số các ô trong vùng chọn.
Dim example As Range Set example = Range("A1:C4") MsgBox example.Count
TH2: Đếm số hàng (Rows)
Dim example As Range Set example = Range("A1:C4") MsgBox example.Rows.Count
TH3: Đếm số cột (Columns)
Dim example As Range Set example = Range("A1:C4") MsgBox example.Columns.Count
Và kết quả thu về là 3.
Trên là cách sử dụng đối tượng Range trong Excel VBA và những phương thức thường sử dụng nhất trong lập trình VBA. Bài này mình sẽ dừng ở đây, hẹn gặp lại bạn ở bài tiếp theo nhé.