Menu

Tự động điền dữ liệu vào UserForm khi chọn ComboBox - Có ai gặp trường hợp này chưa?

Khưu Kim Yến 04/04/2026 10:01 273 lượt xem 3 trả lời

Chào các anh em trong diễn đàn!

Mình đang làm một cái form bằng VBA để nhập liệu, trong đó có một cái ComboBox để chọn tên khách hàng. Vấn đề là khi mình chọn một khách hàng từ ComboBox, mình muốn tự động điền các thông tin khác của khách hàng đó (như địa chỉ, số điện thoại) vào các TextBox tương ứng trên UserForm luôn. Mình đã thử tìm hiểu nhưng chưa làm được.

Cụ thể, mình có một Sheet tên là 'DSKhachHang' với các cột: 'MaKH', 'TenKH', 'DiaChi', 'SoDienThoai'.

Trên UserForm của mình có:

  • ComboBox tên là cmbTenKH
  • TextBox tên là txtDiaChi
  • TextBox tên là txtSoDienThoai

Mình muốn khi chọn 'TenKH' trong cmbTenKH, thì txtDiaChitxtSoDienThoai sẽ tự động hiển thị thông tin tương ứng của khách hàng đó.

Có ai đã từng làm hoặc biết cách xử lý vụ này không ạ? Chia sẻ giúp mình với. Xin cảm ơn!

4

Chào bạn,

Trường hợp này khá phổ biến khi làm việc với UserForm đấy. Để tự động điền dữ liệu khi chọn ComboBox, bạn có thể sử dụng sự kiện Change của ComboBox đó.

Cụ thể, khi người dùng chọn một mục trong ComboBox, sự kiện Change sẽ kích hoạt. Trong đó, bạn sẽ viết code để tìm dòng tương ứng với tên khách hàng đã chọn trong sheet 'DSKhachHang', sau đó lấy các giá trị 'DiaChi' và 'SoDienThoai' gán vào các TextBox tương ứng.

Bạn đã thử viết code cho sự kiện Change của ComboBox chưa? Nếu rồi thì có thể chia sẻ để mọi người cùng xem và góp ý nhé!

5

Khi ComboBox thay đổi, bạn dùng sự kiện _Change() của nó để xử lý. Trong đó, bạn cần tìm dòng chứa khách hàng được chọn từ ComboBox trên sheet 'DSKhachHang'.

Cách đơn giản là dùng vòng lặp For Each duyệt qua các dòng, hoặc dùng Application.Match để tìm vị trí dòng nhanh hơn. Sau khi có vị trí dòng, bạn chỉ việc lấy dữ liệu từ các cột 'DiaChi', 'SoDienThoai' gán vào các TextBox tương ứng.

Bạn đã thử viết code cho sự kiện _Change() chưa? Nếu cần gợi ý về cách tìm dòng hoặc lấy dữ liệu, cứ hỏi tiếp nhé!

0

Hay quá bạn ơi! Đúng là sự kiện Change của ComboBox là chìa khóa cho bài toán này.

Mình xin bổ sung thêm một chút, để code gọn gàng hơn, bạn có thể tận dụng hàm Application.Match hoặc VLOOKUP (nếu MaKH là duy nhất và ở cột đầu) để tìm đúng dòng dữ liệu khách hàng. Sau đó, dùng Cells(rowIndex, columnIndex).Value để lấy thông tin gán vào TextBox.

Bạn đã thử áp dụng Application.Match hay VLOOKUP chưa? Nếu có đoạn code nào gặp khó khăn, cứ mạnh dạn chia sẻ nhé, anh em sẵn sàng hỗ trợ!

3

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký