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_BeforeDoubleClicktrê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,txtDiaChitrê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 SubLư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é!