Đỗ Xuân Huy
Đỗ Xuân Huy
Thảo luận 2 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 146 lượt xem

em có 2 combobox phụ thuộc lẫn nhau Làm thế nào để hiện kết quả vào 1

Chào thầy, em có 2 combobox phụ thuộc lẫn nhau. Làm thế nào để hiện kết quả vào 1 ô textbox bất kỳ khi chọn xong combobox ạ? Em làm thử nhưng bị báo lỗi. Cám ơn thầy rất nhiều ạ.

https://drive.google.com/file/d/1ME3O...

Thảo luận 2 câu trả lời
Lượt xem 146 lượt xem
Vỗ tay vỗ tay
Đỗ Xuân Huy 09:04 - Apr 20, 2021

Trong file của bạn mình hình dung như sau:

- Khi chọn Lớp => combobox Họ tên sẽ hiển thị danh sách học sinh trong lớp đó (chứ không phải toàn bộ danh sách học viên).

Bạn có thể làm theo cách sau đây:

Bước 1: Chuẩn bị danh sách nạp vào combobox Họ tên.

Để có danh sách này bạn cần biết vị trí danh sách này nằm ở đâu.

Ví dụ: Lớp 9A4 lấy theo danh sách ở Sheet IN-TS10, vùng C121:C165

Vấn đề là làm sao xác định được vùng này?

Dựa vào nội dung chọn ở combobox Lớp => Khi chọn combobox này, bạn gán giá trị được chọn vào 1 ô nào đó trong Sheet. Ví dụ: gán vào ô BK1 trong sheet IN-TS10

Private Sub cb_Lop_Change
Sheets("IN-TS10").Range("BK1").Value = Me.cb_Lop.Value
End Sub

Dùng hàm MATCH tìm vị trí điểm bắt đầu của Lớp trong danh sách lớp tại Sheet IN-TS10 (cột A)

Điểm đầu ô BK2 đặt công thức =MATCH(BK1, C1:C516, 0)

Điểm cuối ô BK3 đặt công thức =COUNTIF(C1:C516, BK1) + BK2

Như vậy vùng danh sách là:

Dim DiemBatDau as Long
Dim DiemKetThuc as Long
DiemBatDau = Sheets("IN-TS10").Range("BK2").Value
DiemKetThuc = Sheets("IN-TS10").Range("BK3").Value
Dim VungDanhSach as Range
Set VungDanhSach = Sheets("IN-TS10").Range("C" & DiemBatDau & ":" & "C" & DiemKetThuc)

code này sẽ đặt luôn trong sub cb_Lop_Change ở trên nhé.

Bước 2: nạp danh sách vào combobox Họ tên

Vẫn trong sự kiện cb_Lop_Change sẽ nạp danh sách vào cb_HoTen

Code nạp danh sách thì bạn đã biết rồi. Vùng danh sách đã có ở trên rồi. Chỉ cần viết tiếp vào là được.

Quan trọng là nó diễn ra ở sự kiện cb_Lop_Change chứ ko phải ở UserForm_Initialize

Lưu ý thêm 1 chút nữa: Sheet IN-TS10 phải được sắp xếp theo thứ tự Lớp thì mới dùng được hàm MATCH, COUNTIF chính xác. Do đó bạn có thể record 1 macro về sắp xếp, chạy macro này trước khi gán giá trị của cb_Lop vào ô BK1.

Vỗ tay vỗ tay
Đỗ Xuân Huy 10:04 - Apr 20, 2021

Cám ơn thầy rất nhiều ạ, bài hướng dẫn rất là chi tiết ạ. Em đã may mắn chọn đúng nơi cần học. Cảm ơn thầy.

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông