Hướng dẫn tham chiếu mảng động trong VBA
Đố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 ...
Đố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=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
expression.Resize(RowSize, ColumnSize)
Expression – Đây là đối số bắt buột và là đối tượng range chịu tác động của thuộc tính Resize
RowSize : Số dòng – là biến tùy chọn và là số dòng của vùng mới.Nếu đối số bị bỏ qua, thì hai vùng trước & sau thuộc tính tác động có số dòng như nhau.
Nếu đối số bị bỏ qua, thì hai vùng trước & sau tác động của thuộc tính có số cột như nhau
Sub TestResize()
Range(“A1”, Range(“A” & Rows.Count).End(xlUp)).Resize(, 5).Interior.Color=vbMagentaEnd Sub