06/04/2021, 14:51

Cách dùng đôi tượng Range trong VBA - ự học Excel 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 ...

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.

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:

range example 1 png

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ả

range example 2 png

Ví dụ 3: Thiết lập giá trụ của hai dãy A1:A2B3:C4 là 10

Range("A1:A2,B3:C4").Value = 10

Kết quả

range example 3 png

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 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ả:

cells 2 png

4. Khai báo một biến chứa đối tượng Range

Ta sử dụng từ khóa Dim 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ả:

declare range object png

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ả:

select method png

* 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ả:

rows JPG

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ả:

columns JPG

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ả:

copy paste method png

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.

count property png

TH1: Đếm tổng số các ô trong vùng chọn.

Dim example As Range
Set example = Range("A1:C4")

MsgBox example.Count

count cells png

TH2: Đếm số hàng (Rows)

Dim example As Range
Set example = Range("A1:C4")

MsgBox example.Rows.Count

count rows png

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é.

Trịnh Tiến Mạnh

27 chủ đề

6824 bài viết

Cùng chủ đề
0