Ta có thể làm cách trực quan hơn là format danh sách dữ liệu dưới dạng Table bảng, khi đó dữ liệu thêm mới sẽ được tự động update theo Table đó. Không phải viết hàm Offset phức tạp.
Cách làm của bạn cũng đúng đó. Tuy nhiên sẽ có tình huống bạn muốn thêm nội dung vào bảng danh sách thì thường phải thêm trực tiếp bằng tay vào danh sách (không qua VBA).
Tuy nhiên trong quá trình làm việc (đặc biệt với Userform) thì người sử dụng sẽ muốn từ Userform thêm dữ liệu vào danh sách => Quy trình thường là: tìm dòng cuối của bảng => thêm vào dòng cuối + 1.
Nếu bảng danh sách đang ở dạng Table thì cần tìm dòng cuối theo phương pháp của table (khác 1 chút so với Range bình thường) => khi đó viết code với đối tượng table sẽ phức tạp theo hướng khác.
Chào bạn bạn có thể làm như sau
Sub laydulieu DIm dc as long
dim arr()
dc = sheetname.range(cot & rows.count).end(3).row
arr = sheetname.range("cotbatdau:cot"&dc).value
combobox.list = arr end sub