Đối tượng Range là đối tượng được sử dụng nhiều nhất trong việc viết code trên VBA. Nhưng hầu hết các phạm vi dữ liệu trong các mảng sẽ thay đổi sau mỗi lần chúng ta cập nhật dữ liệu vào mảng đó. Như vậy việc kiểm soát độ dài, độ rộng của mảng dữ liệu trong điều kiện mảng đó luôn biến động là nhiệm vụ rất quan trọng, cần phải nắm vững khi chúng ta làm việc trên VBA. Sau đây chúng ta cùng tìm hiểu một vài ví dụ về kiểm soát tham chiếu mảng động (Trapping dynamic range):
Ví dụ 1: Tham chiếu tới dòng cuối có chứa dữ liệu trong 1 cột
Sub Test01()
Dim lr as long
lr=range(“A” & rows.count).end(xlup).row
Range(“A1:C” & lr)…….
End Sub
Sub Test02()
Dim lr as long
lr=Cells(Rows.Count, 1).End(xlUp).Row
Range(“A” & lr & “:” & “C” & lr)…….
End Sub
Ví dụ 2: Tham chiếu tới cột cuối có chứa dữ liệu
Sub LastUsedCol()
Dim lc As Integer
lc=Range(“IV1”).End(xlToLeft).Column
Cells(1, lc).Interior.Color=vbBlue
End Sub
Ví dụ 3: Tham chiếu tới vị trí giao điểm giữa dòng cuối và cột cuối cùng có chứa dữ liệu
Sub LastUsedCol2()
Dim lc As Integer ‘Cot cuoi
Dim lrAs Integer ‘Dong cuoi
lr=Sheet1.Range(“A” & Rows.Count).End(xlUp).Row
lc=Range(“IV1”).End(xlToLeft).Column
‘Tô màu vàng cho toàn bộ vùng từ Dòng 1, cột cuối cho tới Dòng cuối, cột cuối
Range(Cells(1, lc), Cells(lr, lc)).Interior.Color=vbYellow
End Sub
Ví dụ 4: Xác định đúng vị trí dòng cuối có chứa dữ liệu bằng thuộc tính Find
Sub FinditAll()
Dim lc As Long
Dim lr As Long
‘Xác định chính xác dòng cuối bằng thuộc tính Findlc=Cells.Find(“*”, , , , xlByRows, xlPrevious).Columnlr=Cells.Find(“*”, , , , xlByRows, xlPrevious).Row‘Thông báo kết quả
MsgBox “Row ” & lr & “: Column ” & lcEnd Sub
Ví dụ 5: Sử dụng thuộc tính Resize
Sub TestResize()
Range(“A1”, Range(“A” & Rows.Count).End(xlUp)).Resize(, 5).Interior.Color=vbMagentaEnd Sub