Nhờ giúp tạo Form tìm dữ liệu trên sheet (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thesaintzero

Thành viên hoạt động
Tham gia
16/3/09
Bài viết
158
Được thích
8
Mấy thầy và các cao thủ có thể giúp em 1 vấn đề này không? em có 1 file excel dữ liệu bao gồm :
sheet1
Vùng dữ liệu 1:
A1:D15
Vùng dữ liệu 2:
A16:D20
Vùng dữ liệu 3:
A21:D35
Em xem hướng dẫn của mấy anh trên này và làm được nút tìm kiếm theo dữ liệu theo cells, nhưng không biết làm cách nào để khi tìm được dữ liệu trong vùng nào đó thì toàn bộ vùng dữ liệu đó được chọn theo....
Mong các thầy và các cao thủ giúp đỡ dùm em. Em cám ơn nhiều.
 
Mấy thầy và các cao thủ có thể giúp em 1 vấn đề này không? em có 1 file excel dữ liệu bao gồm :
sheet1
Vùng dữ liệu 1:
A1:D15
Vùng dữ liệu 2:
A16:D20
Vùng dữ liệu 3:
A21:D35
Em xem hướng dẫn của mấy anh trên này và làm được nút tìm kiếm theo dữ liệu theo cells, nhưng không biết làm cách nào để khi tìm được dữ liệu trong vùng nào đó thì toàn bộ vùng dữ liệu đó được chọn theo....
Mong các thầy và các cao thủ giúp đỡ dùm em. Em cám ơn nhiều.


Nếu có file bạn nên gửi file lên để cho các Anh Chị Em dễ hình dung và giúp bạn.
Chào bạn!
 
Upvote 0
cụ thể hơn cho câu hỏi của mình là : mình có 1 cái command button "tìm kiếm" và 1 cái listbox, sao cho khi mình tìm dữ liệu trong vùng dữ liệu 1 thì trong listbox sẽ hiện theo vùng dữ liệu mà mình đã tìm.
 
Upvote 0
cụ thể hơn cho câu hỏi của mình là : mình có 1 cái command button "tìm kiếm" và 1 cái listbox, sao cho khi mình tìm dữ liệu trong vùng dữ liệu 1 thì trong listbox sẽ hiện theo vùng dữ liệu mà mình đã tìm.
Bạn tạo cái khung của Sheet và Form, nêu chi tiết yêu cầu vào trong file rồi gửi lên đây, mọi người sẽ giúp bạn phần còn lại. Đó là cách nhanh nhất để nhận được câu trả lời phù hợp.
 
Upvote 0
Mình gửi file lên các bạn xem và hướng dẫn mình với!. Cám ơn các bạn rất nhiều. Trong này mình đã làm sẵn 1 cái form.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mình gửi file lên các bạn xem và hướng dẫn mình với!. Cám ơn các bạn rất nhiều. Trong này mình đã làm sẵn 1 cái form.
1. Tạo 1 sheet với 2 đối tượng chính là 1 textbox có tên là TxtTen và 1 listbox có tên là LstKQ
2. Sử dụng code sau cho TxtTen:
PHP:
Private Sub TxtTen_AfterUpdate()
    Dim KQ As Range
    Sheet1.Activate
    Set KQ = [B:B].Find(TxtTen)
    If KQ Is Nothing Then
        MsgBox "Khong tim thay ten phu hop!"
        LstKQ.RowSource = ""
    Else
        LstKQ.RowSource = Intersect(KQ.CurrentRegion, KQ.CurrentRegion.Offset(1)).Address
    End If
End Sub
Bạn tham khảo trong file nhé!
 

File đính kèm

Upvote 0
cám ơn bạn nghiaphuc đã giải đáp vấn đề của mình rất nhiều, nhưng cho mình hỏi thêm ngoài lề 1 chút được không?
Trong listbox sao bạn cho hiện name vs cột thành nhiều dòng đc vậy? vì trong code không thấy có chắc là trong thuộc tính đúng không bạn?
Sao khi mình tìm được mà phải click vào listbox thì nó mới hiện ra vậy bạn....?
Bạn có thể giải thích đoạn code này được không? vì mình đọc mà không hiểu ?

LstKQ.RowSource = Intersect(KQ.CurrentRegion, KQ.CurrentRegion.Offset(1)).Address


 
Upvote 0
cám ơn bạn nghiaphuc đã giải đáp vấn đề của mình rất nhiều, nhưng cho mình hỏi thêm ngoài lề 1 chút được không?
Trong listbox sao bạn cho hiện name vs cột thành nhiều dòng đc vậy? vì trong code không thấy có chắc là trong thuộc tính đúng không bạn?
Sao khi mình tìm được mà phải click vào listbox thì nó mới hiện ra vậy bạn....?
Bạn có thể giải thích đoạn code này được không? vì mình đọc mà không hiểu ?
LstKQ.RowSource = Intersect(KQ.CurrentRegion, KQ.CurrentRegion.Offset(1)).Address
1. Để listbox hiện nhiều cột, có dòng tiêu đề, độ rộng cột khác nhau, bạn chọn LstKQ ở chế độ thiết kế, nhìn vào các thuộc tính: ColumnCount, ColumnHeads, ColumnWidths sẽ thấy. Nếu cần, bạn vẽ thêm 1 listbox mới và so sánh thuộc tính của 2 listbox này sẽ thấy sự khác biệt.
2. Không cần thiết phải click vào LstKQ đâu, bạn chỉ cần nhập vào TxtTen và enter là sẽ thấy kết quả, vì code được đưa vào sự kiện TxtTen_AfterUpdate, nghĩa là sau khi TxtTen được cập nhật thì code sẽ chạy.
3. KQ.CurrentRegion là vùng dữ liệu chứa ô KQ (kết quả của việc tìm kiếm), KQ.CurrentRegion.Offset(1) là vùng dữ liệu có được bằng cách dịch chuyển KQ.CurrentRegion xuống 1 hàng (mục đích là trừ hàng tiêu đề, nhưng lại dư 1 hàng trống ở dưới cùng). Còn Intersect trả về vùng giao của 2 vùng trên, như vậy là vừa vặn vùng dữ liệu chứa ô KQ và trừ hàng tiêu đề.
 
Upvote 0
Cảm ơn bạn nghiaphuc vì phần giải thích cặn kẽ.
Vậy nếu vùng dữ liệu mà không cách dòng thì khi cập nhật nó sẽ cập nhật luôn vùng dữ liệu kia đúng không bạn? ------>>> mình vừa thử xong..... vì mình viết code cho nút tìm kiếm mà trong đó sẽ hiện lên listbox theo vùng dữ liệu. Nhưng mình không chắc là nếu khi ta cho vùng dữ liệu trong khoảng bao nhiêu "Row" thì được không bạn? vd: vùng dữ liệu khoảng 17 dòng thì khi vùng dữ liệu không cách dòng vẫn cập nhật được.
Cám ơn bạn nhiều....
 
Upvote 0
Cảm ơn bạn nghiaphuc vì phần giải thích cặn kẽ.
Vậy nếu vùng dữ liệu mà không cách dòng thì khi cập nhật nó sẽ cập nhật luôn vùng dữ liệu kia đúng không bạn? ------>>> mình vừa thử xong..... vì mình viết code cho nút tìm kiếm mà trong đó sẽ hiện lên listbox theo vùng dữ liệu. Nhưng mình không chắc là nếu khi ta cho vùng dữ liệu trong khoảng bao nhiêu "Row" thì được không bạn? vd: vùng dữ liệu khoảng 17 dòng thì khi vùng dữ liệu không cách dòng vẫn cập nhật được.
Cám ơn bạn nhiều....
Nếu không cách dòng thì cơ sở nào để nói rằng một tên nào đó nằm trong vùng dữ liệu nào? Hoặc nếu được thì code cũng dài dòng chứ không ngắn gọn như vậy được.
 
Upvote 0
cám ơn bạn, nhưng vì vùng dữ liệu của mình bao gồm thế này nó mới ác.
vd: A1 : chứa tên người dùng
tới ô A3: là bắt đầu vùng dữ liệu
---------------->>>>> do vậy mình mới hỏi bạn là có thể măc định cho 1 vùng dữ liệu bao gồm bao nhiêu dòng để dễ quản lý thui.
Cụ thể thì mình có file như thế này này, mình muốn tự làm từng phần rùi vừa làm vừa học hỏi các bạn.
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom