Hướng dẫn cách viết thuộc tính RESIZE trong VBA Excel

Khi tìm hiểu về viết code với đối tượng Cells, Range trong VBA, chúng ta hay thấy sử dụng thuộc tính Resize. Vậy Resize có ý nghĩa và các dụng thế nào? Hãy cùng Học Excel Online tìm hiểu cách viết thuộc tính RESIZE trong VBA Excel nhé.

Tác dụng của Resize trong VBA

Resize có tác dụng là tạo ra 1 vùng mới dựa trên điểm gốc. Resize kết hợp với Offset trong VBA sẽ giống như hàm Offset mà bạn thường dùng trong Excel.

Hàm Offset trong Excel mà chúng ta dùng gồm các thành phần:

  • reference: là điểm căn cứ làm gốc tham chiếu
  • rows, cols: là số dòng, số cột sẽ thay đổi tính từ điểm tham chiếu. Đây chính là tác dụng của thuộc tính Offset trong VBA
  • height, width: là độ rộng của vùng được thay đổi, gồm số dòng và số cột. Đây chính là tác dụng của thuộc tính Resize trong VBA

Do đó mục đích sử dụng thuộc tính Resize chính là thay đổi độ rộng của 1 vùng. Kết quả là 1 vùng mới với kích thước có thể mở rộng hoặc thu hẹp theo ý muốn so với vùng ban đầu.

Cú pháp của thuộc tính Resize

Thuộc tính Resize trong VBA được viết như sau:

  • Expression (đối tượng) có thể là 1 Range hoặc 1 Cells
  • Resize là từ khóa của cú pháp, cần viết đúng và viết sau dấu chấm của đối tượng
  • RowSize: số dòng thay đổi (vùng mới sẽ có bao nhiêu dòng)
  • ColumnSize: số cột thay đổi (vùng mới sẽ có bao nhiêu cột)

Ý nghĩa của thuộc tính Resize

Để tìm hiểu ý nghĩa của thuộc tính Resize, chúng ta hãy xem một số ví dụ sau:

Ví dụ 1: Resize từ 1 ô

Range(“A1”).Resize(5, 3).Select

Có nghĩa là: Thay đổi kích thước của ô A1 thành 5 dòng và 3 cột

=> Kết quả là vùng A5:C5 (thành 15 ô, thay vì chỉ 1 ô) được chọn (thuộc tính Select phía sau có nghĩa là được chọn)

Ví dụ 2: Resize từ 1 vùng

Range(“B3:C5”).Resize(2, 2).Select

Có nghĩa là: Vùng B3:C5 (gồm 3 hàng, 2 cột) sẽ thay đổi thành 1 vùng gồm 2 hàng, 2 cột

=> Kết quả là vùng B3:C4 (điểm gốc vẫn giữ nguyên là ô B3) được chọn (thuộc tính Select phía sau có nghĩa là được chọn)

Ví dụ 3: Resize kết hợp Offset

Range(“A1”).Offset(2,2).Resize(10, 4).Select

(lưu ý Offset bao giờ cũng viết trước Resize)

Có nghĩa là: Vùng ô A1 được di chuyển thêm 2 dòng, 2 cột. Tại vị trí mới di chuyển tới được thay đổi kích thước thành 1 vùng có 10 dòng, 4 cột

=> Kết quả:

  • Range(“A1”).Offset(2,2) cho kết quả là ô  C3 (dòng 1, cột 1 có offset sẽ thành dòng = 1 + 2, cột = 1 + 2 => ô dòng 3 cột 3 là ô C3)
  • Range(“A1”).Offset(2,2).Resize(10, 4) sẽ thay đổi thành vùng có 10 dòng, 4 cột tính từ vị trí ô C3 thành vùng C3:F12 (từ dòng 3 tới dòng 12 là 10 dòng, từ cột C tới cột F là 4 cột)

Ứng dụng của Resize trong lập trình VBA

Resize được sử dụng khá phổ biến, có thể kèm theo Offset. Một số ví dụ tiêu biểu như:

1. Resize được dùng nhiều trong việc xác định 1 vùng mà bạn chưa biết rõ phạm vi vùng đó cụ thể là bao nhiêu ô, tùy thuộc vào giá trị thu được của 2 biến RowSize và ColumnSize.

2. Khi bạn muốn copy dữ liệu từ 1 vùng để đưa vào 1 vị trí luôn biến động (ví dụ như dòng trống phía dưới dòng cuối cùng có dữ liệu của 1 bảng).

3. Khoanh vùng 1 bảng tính dựa trên các điểm giới hạn về dòng, cột và 1 điểm làm mốc.

Hy vọng các bạn sẽ ứng dụng tốt kiến thức này vào trong việc học VBA và ứng dụng VBA trong công việc!

Ngoài ra các bạn có thể tham khảo thêm các bài viết sau:

Hướng dẫn cách sử dụng vòng lặp For Each trong VBA Excel

Hướng dẫn cách viết thuộc tính OFFSET trong VBA Excel

Hướng dẫn cách viết cấu trúc IF ELSE trong VBA Excel


Tác giả: duongquan211287

· · ·

Khóa học mới xuất bản