Chào mọi người,
Hôm nay mình muốn chia sẻ với các bạn một kỹ thuật khá hay khi làm việc với UserForm trong VBA, đó là làm sao để tự động tạo các Control (như TextBox, ComboBox, Label...) và bind dữ liệu từ một mảng (Array) có sẵn. Cách này rất hữu ích khi bạn cần hiển thị hoặc chỉnh sửa dữ liệu mà số lượng các mục không cố định hoặc thay đổi thường xuyên.
Thông thường, khi tạo UserForm, chúng ta hay kéo thả các Control thủ công. Tuy nhiên, nếu dữ liệu của bạn nằm trong một mảng, ví dụ như:
Dim dataArray As Variant
dataArray = Array("Mục 1", "Mục 2", "Mục 3", "Mục 4")Việc tạo thủ công từng Control cho mỗi mục sẽ rất mất công. Thay vào đó, chúng ta có thể dùng vòng lặp để tạo Control một cách động.
Các bước thực hiện:
- Khai báo một mảng chứa dữ liệu bạn muốn hiển thị.
- Sử dụng vòng lặp
For...Nextđể duyệt qua từng phần tử trong mảng. - Bên trong vòng lặp, sử dụng phương thức
Me.Controls.Addđể tạo mới một Control (ví dụ: