25/05/2018, 23:31

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 Find

lc=Cells.Find(“*”, , , , xlByRows, xlPrevious).Column
lr=Cells.Find(“*”, , , , xlByRows, xlPrevious).Row
‘Thông báo kết quả
MsgBox “Row ” & lr & “: Column ” & lc

End Sub

Ví dụ 5: Sử dụng thuộc tính Resize

Thuộc tính Resize​ sẽ định hình lại kích thước của 1 vùng đặc trưng. (Thuộc tính) sẽ trả về là đối tượng vùng (range) thay cho vùng trước đó, khi thuộc tính chưa tác động.
Cú pháp của thuộc tính là
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.
ColumnSize: số lượng cột – là biến tùy chọn và là số cột của vùng mới.
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=vbMagenta

End Sub

 Để có thể hiểu sâu hơn về các nội dung này, các bạn cần luyện tập nhiều và tìm hiểu thêm kiến thức về Excel VBA liên quan tới việc xác định các điểm giới hạn trong 1 vùng
Chúc các bạn học tốt cùng Học Excel online!
0