Menu

Chia sẻ cách tự động điền dữ liệu vào UserForm từ Sheet Excel

Khưu Văn Huyền 01/07/2026 05:10 379 lượt xem 3 trả lời

Chào các bác, hôm nay em muốn chia sẻ một kinh nghiệm nhỏ mà em đã áp dụng thành công trong dự án gần đây. Cụ thể là làm sao để tự động điền dữ liệu từ một bảng tính Excel vào các ô tương ứng trên UserForm khi người dùng chọn một dòng dữ liệu.

Tình huống của em là có một danh sách khách hàng trên Sheet, và khi em muốn sửa thông tin khách hàng đó, em muốn mở một UserForm lên, Form này sẽ tự động hiển thị thông tin của khách hàng được chọn, thay vì phải gõ lại từ đầu.

Cách làm của em như sau:

  • Đầu tiên, em thiết lập sự kiện Worksheet_BeforeDoubleClick trên Sheet chứa dữ liệu. Khi người dùng double click vào một ô trong vùng dữ liệu, sự kiện này sẽ kích hoạt.
  • Trong sự kiện này, em lấy thông tin của dòng vừa được double click. Ví dụ, nếu người dùng double click vào ô ở cột A, em sẽ lấy toàn bộ dữ liệu của dòng đó.
  • Sau đó, em sẽ gọi UserForm lên và truyền các giá trị đã lấy được vào các control tương ứng trên Form. Ví dụ, nếu em có các ô TextBox tên là txtHoTen, txtDiaChi trên UserForm, em sẽ gán giá trị như sau:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim frm As UserForm1 ' Thay UserForm1 bằng tên UserForm của bạn
    
    ' Kiểm tra xem có double click vào vùng dữ liệu không
    If Not Intersect(Target, Me.Range("A2:G100")) Is Nothing Then ' Thay "A2:G100" bằng vùng dữ liệu của bạn
        Set frm = New UserForm1
        
        ' Gán giá trị từ Sheet vào các control trên UserForm
        frm.txtHoTen.Value = Target.EntireRow.Cells(1, 1).Value ' Giả sử Họ tên ở cột A
        frm.txtDiaChi.Value = Target.EntireRow.Cells(1, 2).Value ' Giả sử Địa chỉ ở cột B
        ' ... Gán cho các control khác tương tự
        
        frm.Show
        Cancel = True ' Ngăn Excel thực hiện hành động mặc định khi double click
    End If
End Sub

Lưu ý là các bạn cần thay đổi tên UserForm và các tên control (txtHoTen, txtDiaChi...) cho phù hợp với form của mình. Đồng thời, điều chỉnh các chỉ số cột (Cells(1, 1), Cells(1, 2)) để khớp với vị trí dữ liệu trên Sheet.

Cách này giúp việc chỉnh sửa dữ liệu trở nên nhanh chóng và giảm thiểu sai sót. Các bác có cách nào hay hơn thì chia sẻ thêm cho em học hỏi với nhé!

0

Hay quá bạn ơi! Mình cũng đang đau đầu với việc này. Cách bạn làm có vẻ rất trực quan và dễ áp dụng.

Bạn có thể cho mình hỏi thêm một chút được không? Khi UserForm hiển thị, làm sao để mình biết được dòng nào trên Sheet đang được chọn để lấy dữ liệu tương ứng vậy? Có cách nào để "truyền" thông tin dòng đó vào UserForm không?

4

Chào bạn,

Cảm ơn bạn đã chia sẻ kinh nghiệm rất hay này! Việc tự động điền dữ liệu vào UserForm giúp tiết kiệm rất nhiều thời gian và giảm thiểu sai sót. Mình cũng thường xuyên gặp tình huống này, đặc biệt khi cần sửa đổi thông tin khách hàng hoặc sản phẩm.

Bạn có thể chia sẻ thêm về cách bạn lấy dữ liệu từ dòng được chọn trên Sheet để gán vào các control trên UserForm không? Liệu có cách nào để xử lý trường hợp dữ liệu trên Sheet có nhiều cột không ạ?

Rất mong nhận được phản hồi từ bạn!

3

Mình thấy cách bạn chia sẻ về việc tự động điền dữ liệu vào UserForm từ Sheet rất hữu ích. Thực sự là một giải pháp hiệu quả để tránh nhập liệu thủ công và tiết kiệm thời gian.

Mình cũng có một cách tương tự nhưng sử dụng ListBox để hiển thị danh sách, khi người dùng chọn một dòng trong ListBox thì dữ liệu sẽ tự động nạp vào các TextBox trên UserForm. Cách này cũng khá gọn gàng.

Không biết bạn đã thử dùng ListBox chưa? Nếu có thì điểm khác biệt lớn nhất giữa cách của bạn và cách dùng ListBox là gì nhỉ?

1

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

Đăng nhập Đăng ký