Đố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
- Điểm đầu cố định, điểm cuối thay đổi: Tham chiếu tới vùng bảng từ cột A tới cột C, từ dòng 1 tới dòng cuối có chứa dữ liệu ở cột A
Sub Test01()
Dim lr as long
lr=range(“A” & rows.count).end(xlup).row
Range(“A1:C” & lr)…….End Sub
- Điểm đầu và điểm cuối đều thay đổi theo dòng cuối
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=vbBlueEnd 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 lr As 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=vbYellowEnd 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 Find
lc=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





Bình luận