Đối tượng Range trong Excel VBA

Trong bài viết này, Blog Học Excel Online sẽ giúp bạn tìm hiểu đối tượng Range trong Excel VBA. Đối tượng Phạm vi trong Excel VBA là đối tượng được sử dụng thường xuyên nhất khi bạn làm việc với VBA trong Excel.

Đối tượng Phạm vi trong Excel là gì?

Đối tượng Phạm vi trong Excel có thể là một ô (Cell), một dải ô (Cells), một hàng hoặc một cột trên bảng tính Excel.

Cách khai báo và tham chiếu đến đối tượng Phạm vi trong Excel

Trong VBA, chúng ta có thể tham chiếu đến đối tượng Phạm vi của Excel như sau:

Dim myRange as Range
set myRange = Range("A1") 'Tham chiếu tới ô A1

Nếu bạn làm việc với nhiều Trang tính trên một bảng tính, chúng ta nên tham khảo cụ thể hơn như sau:

Dim myRange as Range
set myRange = Sheets("Sheet1").Range("A1") 'Tham chiếu tới ô A1 của Sheet1

Tham chiếu cụ thể và chi tiết như thế nào, phụ thuộc vào đối tượng bạn đang làm việc với dự án lập trình VBA của mình. Bạn có thể tham khảo bài viết Hệ thống các đối tượng trong Excel VBA để hiểu rõ hơn về vấn đề này.

Tải game crack việt hoá tại: https://daominhha.com

Để khai báo và tham chiếu đến các vùng khác, bạn có thể làm điều này tương tự như cách tham chiếu đến các vùng được sử dụng trong công thức Excel, nghĩa là các tham chiếu sau đến đối tượng Range là hợp lệ. tỷ lệ:

Set myRange = Range("A1:C5") ' Tham chiếu tới vùng A1:C5
Set myRange = Range("A:A")    ' Tham chiếu tới cột A
Set myRange = Range("1:1")    ' Tham chiếu tới dòng thứ nhất

Cách tham chiếu đến đối tượng Range trong VBA như trên thuộc kiểu tham chiếu A1, ngoài ra chúng ta còn có một kiểu tham chiếu ít phổ biến hơn, gọi là tham chiếu R1C1.

>>> Xem thêm:  Cách ẩn và gộp cột trong Excel 2010, 2013, 2016

Cách tham chiếu đến đối tượng Phạm vi thông qua các ô

Ngoài cách tham chiếu đến đối tượng Range trong Excel như trên, khi làm việc với đối tượng Range trong VBA, bạn cũng có thể tham chiếu đến một dải thông qua đối tượng Cell, bằng cách xác định ô đầu tiên, phía trên bàn tay. ô bên trái và ô cuối cùng, dưới cùng bên phải của vùng tham chiếu, ví dụ với tham chiếu và mã VBA như sau

Range( Cells(1,1), Cells(5,4) ).Value = 234

thì kết quả sẽ như sau:

doi-tuong-range-in-excel-vba

Tất nhiên, bạn cũng có thể tham khảo những điều sau

Range( Range("A1"), Range("D5") ).Value = 234

Với kiểu tham chiếu trên, bạn sẽ thấy rõ rằng ô đầu tiên của phạm vi tham chiếu là A1, ô cuối cùng của phạm vi tham chiếu là D5

Ứng dụng của đối tượng Phạm vi trong Excel VBA

Trong bài viết này, tôi sẽ không chủ động liệt kê tất cả các phương thức và thuộc tính của đối tượng Range trong Excel VBA. Nếu bạn muốn tìm hiểu các phương thức (Method) và thuộc tính của đối tượng này, hãy tham khảo cách sử dụng Object Browser trong trình soạn thảo VBA trong bài viết System of Objects trong Excel VBA

Trong phần này, chúng ta sẽ đi tìm hiểu một số ví dụ về ứng dụng của đối tượng Range để hoạt động.

Xóa các dòng thỏa mãn điều kiện

Trong ví dụ ứng dụng này, chúng ta cần xóa hàng trong đó cột B có dấu “x”. Trong ví dụ này, bạn có thể dễ dàng viết đoạn mã sau bằng một vòng lặp để xóa hàng trong đó cột B chứa dấu “x”, là dòng id = 0002, id = 0007 và id = 0008

doi-tuong-range-in-excel-vba

Đoạn mã như sau:

Sub xoa_dong_trong_1()
    For i = 2 To 10
        If Range("B" & i).Value = "x" Then
            Range("B" & i).EntireRow.Delete
        End If
    Next i
End Sub

Đây là một đoạn mã khá đơn giản, phải không? Tuy nhiên khi chạy đoạn mã này bạn sẽ nhận được kết quả như mong muốn, vì giữa biến i và dòng cần xóa đã bị mất đồng bộ, khi xóa thì tham chiếu đến các dòng bên dưới cũng thay đổi theo. để xóa dòng không còn đúng nữa. Để khắc phục điều này, chúng ta cần tham khảo các dòng / khu vực cần xóa từ dưới lên như sau:

Sub xoa_dong_trong_2()
    For i = 10 To 2 Step -1
        If Range("B" & i).Value = "x" Then
            Range("B" & i).EntireRow.Delete
        End If
    Next i
End Sub

Vì vậy, qua ví dụ này, bạn đã biết thuộc tính .EntireRow và phương pháp .Delete và ứng dụng của hai thuộc tính này trong việc chọn toàn bộ dòng và xóa dòng theo điều kiện.

>>> Xem thêm:  Tạo iCon So Sánh Tăng Giảm Trong Excel

Tô màu vùng dữ liệu thỏa mãn điều kiện

Cùng với dữ liệu như trên, chúng ta hãy thay đổi chủ đề một chút, đó là tô màu cho hàng mà cột B có giá trị “x”. Để thực hiện việc này, chúng ta có nhiều cách khác nhau, đoạn mã VBA sau đây là một cách thực hiện:

Sub highlight_1()
    For i = 2 To 10
        If Range("B" & i).Value = "x" Then
            Range("B" & i).Offset(0, -1).Resize(1, 2).Interior.Color = RGB(0, 255, 0)
        End If
    Next i
End Sub

Trong đoạn mã trên, với. phương pháp .Offset(0, -1) bạn chuyển đến từ Range("B" & i) Về Range("A" & i) sau đó sử dụng phương pháp .Resize(1, 2) để chọn 2 ô trong cột A, cột B trong hàng i, sau đó tô nền bằng .Interior.Color

Điền công thức vào Phạm vi với mã VBA

Với dữ liệu tương tự như trong ví dụ trên, chúng ta muốn điền một công thức vào ô B11 để đếm xem cột B có bao nhiêu giá trị “x”, làm thế nào chúng ta có thể giải quyết vấn đề này?

Đầu tiên, để đếm theo điều kiện, bạn có thể sử dụng hàm COUNTIF, vì vậy bước đầu tiên là viết hàm COUNTIF trong ô B11 như sau:

=COUNTIF(B2:B10,"x")

Với hàm COUNTIF như trên, bạn có thể chuyển nó thành mã VBA để điền công thức vào một dải ô bằng cách sử dụng thuộc tính .Formula như sau:

Sub enter_formula_1()
    Range("B11").Formula = "=COUNTIF(B2:B10,"x")"
End Sub

Tuy nhiên, sau khi điền như vậy, bạn sẽ gặp lỗi:

>>> Xem thêm:  Tách Họ Tên Trong Excel Bằng Flash Fill

doi-tuong-range-in-vba-excel

Nguyên nhân của lỗi này là do trong công thức có ký tự “x”, được bao quanh bởi dấu ngoặc kép, dấu ngoặc kép này cũng là dấu hiệu báo cho VBA biết dữ liệu có kiểu String nên VBA không biết nó ở đâu. . chuỗi, các phần tử khác là gì,… và lỗi. Rất may cho chúng ta là cách xử lý trường hợp này rất đơn giản, với mỗi dấu ngoặc kép, bạn chỉ cần thêm một dấu ngoặc kép khác bên cạnh. Dấu ngoặc kép phụ này, được gọi là ký tự thoát, được sử dụng để nói với VBA rằng chúng ta sẽ viết một ký tự đặc biệt sau ký tự thoát. Mã không có lỗi sẽ trông như thế này:

Sub enter_formula_1()
    Range("B11").Formula = "=COUNTIF(B2:B10,""x"")"
End Sub

Qua ví dụ này, chúng ta đã quen thuộc với thuộc tính .Formula của đối tượng Phạm vi trong Excel VBA.

Qua bài viết này, Thành hy vọng đã mang đến cho các bạn một chút khái niệm cơ bản nhất về đối tượng Range trong ngôn ngữ lập trình VBA của Excel. Tham khảo khóa học VBA cơ bản, trong đó chúng ta sẽ có cơ hội làm quen và thực hành thêm nhiều ví dụ khác:

Tự động hóa Excel với lập trình VBA cho người mới bắt đầu

Nguồn : Blog hocexcel