Lực td
Lực td
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 1529 lượt xem

Cách sử dụng đối tượng Range để viết code trong công cụ VBA Excel.

Jan 15 2021

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 thêm: Hướng dẫn về đối tượng Range trong VBA cơ bản

Làm sao để viết đối tượng Range trong VBA Excel?

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 1: Range không cố định địa chỉ.

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. 

Tuyệt đỉnh VBA - Viết code trong tầm tay

Dạng 2: Range cố định địa chỉ (hay đã xác định được phạm vi làm việc).

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: Tìm hiểu về cách tự tạo hàm Excel trong VBA

Những cú pháp của Range thường được sử dụng và ý nghĩa của chúng.

Ứng dụng của Range trong VBA Excel.

Ẩn dòng hoặc cột 

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.

Chọn vùng ô A2:D2

Range(“A2:D2”).Select

[A2:D2].Select

Gán một giá trị vào một vùng ô

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.

Xoá dữ liệu, xoá ô, xoá cột, xoá dòng

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.

Một số chú ý khi sử dụng Range tại các Worksheet và Workbook khác nhau.

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.

Xem thêm: Cách phân biệt ActiveWorkbook với ThisWorkbook khi lập trình VBA Excel

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.

Tổng kết

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.

Ngoài ra bạn đọc cũng có thể tìm đọc thêm những bài viết liên quan của Gitiho.com

Hướng dẫn tìm kiếm và lọc dữ liệu tự động bằng Textbox trong Excel VBA

Hướng dẫn hiện thẻ Developer để ghi Macro hoặc viết code VBA trong Excel

Unicode tiếng việt khi viết trong VBA

HƯỚNG DẪN CÁCH VIẾT HÀM VBA TRONG EXCEL

Cách sử dụng hàm MsgBox() để tạo hộp thông báo với VBA

Cùng tham gia cộng đồng hỏi đáp về chủ đề VBA

Thảo luận 0 câu trả lời
Lượt xem 1529 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội