Menu

Tự động hóa việc điền dữ liệu vào bảng tính dựa trên lựa chọn từ ComboBox trên UserForm

Thiều Thanh Uyên 20/03/2026 19:41 153 lượt xem 1 trả lời

Chào các anh chị em trong diễn đàn,

Hiện tại em đang làm một dự án nhỏ liên quan đến việc nhập liệu tự động hóa trong Excel và gặp một chút vướng mắc. Em đã tạo được một UserForm với một ComboBox để người dùng chọn các tùy chọn khác nhau. Vấn đề là sau khi người dùng chọn một tùy chọn trong ComboBox, em muốn dữ liệu tương ứng với tùy chọn đó sẽ tự động điền vào các ô trong UserForm (ví dụ: Textbox, Label) để người dùng xem trước hoặc chỉnh sửa trước khi lưu.

Em đã thử tìm hiểu về sự kiện ComboBox_Change hoặc ComboBox_Click nhưng chưa áp dụng thành công. Cụ thể, em muốn khi chọn một mã sản phẩm trong ComboBox, các thông tin như Tên sản phẩm, Đơn giá sẽ tự động hiển thị ở các ô khác trên UserForm.

Anh chị nào có kinh nghiệm xử lý trường hợp này có thể chia sẻ giúp em một đoạn code mẫu hoặc hướng dẫn cụ thể cách làm được không ạ? Em xin cảm ơn rất nhiều!

Ví dụ cấu trúc dữ liệu nguồn:

Mã SP | Tên SP        | Đơn giá
SP001 | Bàn phím      | 500000
SP002 | Chuột         | 250000
SP003 | Màn hình      | 3000000

Em mong nhận được sự giúp đỡ từ mọi người!

3

Chào bạn,

Vấn đề bạn đang gặp là xử lý sự kiện Change hoặc Click của ComboBox trên UserForm để cập nhật dữ liệu cho các điều khiển khác. Đây là một thao tác khá phổ biến.

Bạn có thể thử code như sau:

Private Sub ComboBox1_Change()
    ' Giả sử bạn có một bảng dữ liệu ở Sheet1
    ' Cột A chứa các tùy chọn của ComboBox
    ' Cột B, C, D chứa dữ liệu tương ứng bạn muốn điền vào Textbox1, Textbox2, Textbox3

    Dim selectedItem As String
    Dim dataRow As Range

    selectedItem = Me.ComboBox1.Value

    ' Tìm dòng dữ liệu tương ứng
    On Error Resume Next ' Bỏ qua lỗi nếu không tìm thấy
    Set dataRow = Sheet1.Columns("A").Find(What:=selectedItem, LookIn:=xlValues, LookAt:=xlWhole)
    On Error GoTo 0

    If Not dataRow Is Nothing Then
        ' Điền dữ liệu vào các Textbox (giả sử bạn có Textbox1, Textbox2, Textbox3)
        Me.TextBox1.Value = dataRow.Offset(0, 1).Value ' Cột B
        Me.TextBox2.Value = dataRow.Offset(0, 2).Value ' Cột C
        Me.TextBox3.Value = dataRow.Offset(0, 3).Value ' Cột D
    Else
        ' Xóa trống các Textbox nếu không tìm thấy
        Me.TextBox1.Value = ""
        Me.TextBox2.Value = ""
        Me.TextBox3.Value = ""
    End If
End Sub

Bạn cần thay thế ComboBox1, Sheet1, TextBox1, TextBox2, TextBox3 và các cột tương ứng cho phù hợp với UserForm của bạn nhé.

Nếu bạn gặp khó khăn ở bước nào hoặc muốn xử lý phức tạp hơn, cứ chia sẻ thêm chi tiết!

5

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

Đăng nhập Đăng ký