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

Offset là một hàm thú vị trong Excel. Và trong VBA chúng ta cũng có Offset dưới dạng 1 thuộc tính của đối tượng Cells, Range. Trong bài viết này chúng ta cùng tìm hiểu về thuộc tính OFFSET trong VBA Excel nhé.

Cách viết thuộc tính Offset của đối tượng Range, Cells

Bản chất của Offset là việc di chuyển từ 1 vị trí này tới vị trí khác. Gồm có điểm gốc và điểm đến. Điểm đến sẽ cách điểm gốc bao nhiêu dòng, bao nhiêu cột, và theo hướng nào.

Offset trong VBA được viết như sau:

Expression có thể là 1 Range (vùng ô) hoặc 1 Cells (ô)

Khi viết thuộc tính Offset thì kèm theo dấu chấm, sau đó gọi tên thuộc tính theo cú pháp

Tham số bên trong Offset được viết trong cặp dấu ngoặc đơn, gồm:

  • Số dòng di chuyển: Nếu số >0 thì di chuyển xuống dưới so với điểm gốc, nếu số <0 thì di chuyển lên trên so với điểm gốc. Nếu = 0 thì giữ nguyên dòng
  • Số cột di chuyển: Nếu số >0 thì di chuyển sang phải so với điểm gốc, nếu số <0 thì di chuyển sang trái so với điểm gốc. Nếu = 0 thì giữ nguyên cột

Ví dụ1 : Range(“A1”).Offset(0, 1)

=> Điểm gốc là ô A1, di chuyển 0 dòng và 1 cột về bên phải => Kết quả là tham chiếu tới ô B1

Ví dụ 2: Cells(5, 3).Offset(-1, 2)

=> Điểm gốc là ô C5 (dòng 5 cột 3), di chuyển 1 dòng lên phía trên, 2 cột về bên phải => Kết quả tham chiếu tới ô E4 (dòng 4 cột 5)

* Chú ý:

Để biết kết quả của Range, Cells có phương thức Offset sẽ di chuyển tới đâu, lấy chính số dòng, số cột cộng trực tiếp tương ứng với tham số bên trong Offset. Kết quả của số dòng, cột mới chính là tọa độ của điểm mới sẽ di chuyển tới.

Ví dụ 1:

Range(“A1”) = Cells(1, 1)

Range(“A1”).Offset(0, 1) = Cells(1 + 0, 1 + 1) = Cells(1, 2) là dòng 1 cột 2, chính là ô B1

Ví dụ 2:

Cells(5, 3).Offset(-1, 2) = Cells(5 – 1, 3 + 2) = Cells(4, 5) là dòng 4 cột 5, chính là ô E4

Ứng dụng hàm Offset

Trong bảng danh sách nhân viên, hãy xác định mức thưởng cho nhân viên biết: Nếu nhân viên ở bộ phận kinh doanh có mức thưởng là 500:

Câu lệnh VBA là:

Trong ví dụ này, ta thấy câu lệnh:

bien_DoiTuong.Offset(0, 1).Value = Range(“F2”).Value

Câu lệnh này có ý nghĩa là kết quả được lấy vào vị trí ô tương ứng với ô bien_DoiTuong, cách ô đó 1 cột (chính là cột Mức thưởng) theo giá trị tại ô F2.

Khi sử dụng cú pháp For Each, chúng ta phải căn cứ vào biến đối tượng, kết quả phải có liên quan tới biến đối tượng. Do vậy dùng hàm Offset để di chuyển tới ô kết quả tương ứng theo ô Biến đối tượng.


Tác giả: duongquan211287

· · ·

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