Nhờ mọi người giúp về Userform: Tìm kiếm theo danh sách có sẵn phụ thuộc nhau

Liên hệ QC

qthanhhp

Thành viên mới
Tham gia
14/1/19
Bài viết
43
Được thích
0
NHờ mn giúp đỡ !
Có tham khảo bài này: https://blog.hocexcel.online/cach-tao-combobox-co-danh-sach-phu-thuoc-nhau.html
gần giống với ý tưởng của mình
Mình có 2 nút bấm Tìm kiếm VN1 và Tìm kiếm VN4, mình nhờ các pro code hộ mình tìm kiếm theo các ô từ A-G, nghĩa là khi mình đánh chữ vào 1 ô tên người làm, danh sách hiện ra 1 list gợi ý bên dưới, sau đó mình lại sang ô tên đơn vị đánh tiếp để rút gọn danh sách tìm kiếm, cứ như vậy cho đến khi gõ vào ô số CT, ngày, tháng, năm để tìm cho nhanh ấy ạ (Mình đã làm sẵn các box trong form rồi)
Lưu ý là ở nút Tìm kiếm VN4 vẫn ở sheet VN1 và tìm kiếm dữ liệu ở sheet VN4
Thanks All ạ
 

File đính kèm

Lần chỉnh sửa cuối:
Định giúp bạn từ sáng , nhưng bận quá, đợi chút tôi post lên: làm hoàn toàn trên form
Bài đã được tự động gộp:


Như hình này thì bạn làm được rồi còn gì?
rất cám ơn anh đã nhiệt tình, em làm được rồi nhưng còn cái là khi search thì nó vẫn tự động xuất ra dữ liệu mà e chỉ muốn bảng đó là tìm kiếm thôi
Bài đã được tự động gộp:

Mình thì không thể coi thiết kế Form của file bạn & chào tạm biệt!
anh ơi, e làm đc rồi ^^ chỉnh ở columnwith trong lisbox đấy
 
Upvote 0
rất cám ơn anh đã nhiệt tình, em làm được rồi nhưng còn cái là khi search thì nó vẫn tự động xuất ra dữ liệu mà e chỉ muốn bảng đó là tìm kiếm thôi
Bài đã được tự động gộp:


anh ơi, e làm đc rồi ^^ chỉnh ở columnwith trong lisbox đấy
Tự động xuất là sao nhỉ, bạn muốn xuất ra listbox đó còn gì?
 
Upvote 0
mỗi lần em tìm kiếm, nó tự ghi ra cột U đên cột V đó, cái này là advance Filter mà anh be9 làm ấy mà, giờ ko muốn nó hiện ra ấy mà ^^
Dùng Advanced filter thì phải đổ vào sheet là chuẩn rồi

-------------
Xem file kèm này đi,
Theo đúng yêu cầu mong muốn, nếu đúng thì than lên 1 tiếng

Xem kỹ code ở module FORM frmFIND, và module mod_Loc
Xem cách trang trí trình bày form (lần sau tránh kiểu to đùng, gà mái mẹ như cũ)
Cũng như cách đặt tên cho các controls: textbox, listbox, ...
 
Lần chỉnh sửa cuối:
Upvote 0
mỗi lần em tìm kiếm, nó tự ghi ra cột U đên cột V đó, cái này là advance Filter mà anh be9 làm ấy mà, giờ ko muốn nó hiện ra ấy mà ^^
Dùng Advanced filter thì phải đổ vào sheet là chuẩn rồi

-------------
Xem file kèm này đi,
Theo đúng yêu cầu mong muốn, nếu đúng thì than lên 1 tiếng

Xem kỹ code ở module FORM frmFIND, và module mod_Loc
Xem cách trang trí trình bày form (lần sau tránh kiểu to đùng, gà mái mẹ như cũ)
Cũng như cách đặt tên cho các controls: textbox, listbox, ...
Quên sửa lại mà không gửi file kèm
Đây nhé
 

File đính kèm

Upvote 0
Dùng Advanced filter thì phải đổ vào sheet là chuẩn rồi

-------------
Xem file kèm này đi,
Theo đúng yêu cầu mong muốn, nếu đúng thì than lên 1 tiếng

Xem kỹ code ở module FORM frmFIND, và module mod_Loc
Xem cách trang trí trình bày form (lần sau tránh kiểu to đùng, gà mái mẹ như cũ)
Cũng như cách đặt tên cho các controls: textbox, listbox, ...
Quên sửa lại mà không gửi file kèm
Đây nhé
quá hay anh ơi, thanks a rất nhiều ^^ :****
 
Upvote 0
quá hay anh ơi, Cảm ơn a rất nhiều ^^ :****
ah lưu ý:
- xem code đầu mod_Loc có hằng số 200 đặt cho số dòng hiện lớn nhất của listbox- bạn có thể thay đổi cái này,

- muốn hiện toàn bộ dữ liệu, thì tại textbox họ thên, chỉ cần gõ 1 khoảng trắng (1 space)
Bài đã được tự động gộp:

Tôi sửa lại vẫn nhầm,
* bạn sửa lại dòng code sau (trong module mod_Loc)
Mã:
If Not IsArray(arrStr) Then
thành
Mã:
If Not IsArray(aR) Then

* và xóa bỏ arrStr ở dòng thứ 3 trong mod_Loc

Cho chuẩn sát hơn
 
Lần chỉnh sửa cuối:
Upvote 0
ah lưu ý:
- xem code đầu mod_Loc có hằng số 200 đặt cho số dòng hiện lớn nhất của listbox- bạn có thể thay đổi cái này,

- muốn hiện toàn bộ dữ liệu, thì tại textbox họ thên, chỉ cần gõ 1 khoảng trắng (1 space)
Bài đã được tự động gộp:

Tôi sửa lại vẫn nhầm,
* bạn sửa lại dòng code sau (trong module mod_Loc)
Mã:
If Not IsArray(arrStr) Then
thành
Mã:
If Not IsArray(aR) Then

* và xóa bỏ arrStr ở dòng thứ 3 trong mod_Loc

Cho chuẩn sát hơn
yêu quá, đúng ý em
nhưng bác ơi, ví dụ dữ liệu đầu vào có những ô bị thiếu, khi e gõ ở các ô # vẫn muốn hiện lên thì ntnao ?
ví dụ như gõ ngày 2 tháng 1 năm 2018, vẫn hiện lên Cơ sở cai nghiện ma túy Gia Minh (vì tại Cơ sở cai nghiện ma túy Gia Minh - dòng 5, ô tên người làm bỏ trống)
 

File đính kèm

Upvote 0
yêu quá, đúng ý em
nhưng bác ơi, ví dụ dữ liệu đầu vào có những ô bị thiếu, khi e gõ ở các ô # vẫn muốn hiện lên thì ntnao ?
ví dụ như gõ ngày 2 tháng 1 năm 2018, vẫn hiện lên Cơ sở cai nghiện ma túy Gia Minh (vì tại Cơ sở cai nghiện ma túy Gia Minh - dòng 5, ô tên người làm bỏ trống)
Thì ô đó để trống nhé. Ô nào có thì nhập vào
Yêu j nghe sợ quá.
 
Upvote 0
Thì ô đó để trống nhé. Ô nào có thì nhập vào
Yêu j nghe sợ quá.
Bác ơi, em có tạo thêm 1 cột giá trị, khi đánh vào textbox nó ko hiện dạng số nhỉ, ví dụ gõ 10.000.000, nó thành 10000000
mò được trên mạng cách textbox định dạng số, nhưng listbox vẫn chưa được, hic
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bác ơi, em có tạo thêm 1 cột giá trị, khi đánh vào textbox nó ko hiện dạng số nhỉ, ví dụ gõ 10.000.000, nó thành 10000000
mò được trên mạng cách textbox định dạng số, nhưng listbox vẫn chưa được, hic
thì thế là đúng rồi, còn format hay không thì phải viết lệnh
List box, chỉ biết hiển thị những gì cung cấp cho nó
Tôi chưa xem file của bạn, nên không biết thêm cột là sao? và bạn có sửa số cột trong code không?

Mạng LAN thì không thể vì Excel không hỗ trợ mạng , là các file đơn, ngay công thức mà liên kết file khác cùng PC đã loạn rồi dễ bể link và sai xót, còn ra LAN thì thôi rồi --> giải pháp mua phần mềm khác (phần mềm đặc chuyên dụng) , mua công cụ ATool mà họ quảng cáo suốt ở diễn đàn này (cái này thì tôi thấy và nghe - còn thử hay test thì chưa, nên tự tìm hiểu và đánh giá). Còn giải pháp tốt hơn nữa là dùng Google Spreadsheet hay các bảng tính online cloud thì sẽ tốt hơn nhiều (nhưng khi đó lại dính bảo mật dữ liệu và phụ thuốc tốc độ internet (đợi 5G thì chắc ngon)
 
Lần chỉnh sửa cuối:
Upvote 0
thì thế là đúng rồi, còn format hay không thì phải viết lệnh
List box, chỉ biết hiển thị những gì cung cấp cho nó
Tôi chưa xem file của bạn, nên không biết thêm cột là sao? và bạn có sửa số cột trong code không?

Mạng LAN thì không thể vì Excel không hỗ trợ mạng , là các file đơn, ngay công thức mà liên kết file khác cùng PC đã loạn rồi dễ bể link và sai xót, còn ra LAN thì thôi rồi --> giải pháp mua phần mềm khác (phần mềm đặc chuyên dụng) , mua công cụ ATool mà họ quảng cáo suốt ở diễn đàn này (cái này thì tôi thấy và nghe - còn thử hay test thì chưa, nên tự tìm hiểu và đánh giá). Còn giải pháp tốt hơn nữa là dùng Google Spreadsheet hay các bảng tính online cloud thì sẽ tốt hơn nhiều (nhưng khi đó lại dính bảo mật dữ liệu và phụ thuốc tốc độ internet (đợi 5G thì chắc ngon)
em có edit code mà, kiểu thêm cột giá tiền ấy, khi search theo giá tiền thì nó ko hiển thị dấu . ngăn cách giữa các con số
Bài đã được tự động gộp:

thì thế là đúng rồi, còn format hay không thì phải viết lệnh
List box, chỉ biết hiển thị những gì cung cấp cho nó
Tôi chưa xem file của bạn, nên không biết thêm cột là sao? và bạn có sửa số cột trong code không?

Mạng LAN thì không thể vì Excel không hỗ trợ mạng , là các file đơn, ngay công thức mà liên kết file khác cùng PC đã loạn rồi dễ bể link và sai xót, còn ra LAN thì thôi rồi --> giải pháp mua phần mềm khác (phần mềm đặc chuyên dụng) , mua công cụ ATool mà họ quảng cáo suốt ở diễn đàn này (cái này thì tôi thấy và nghe - còn thử hay test thì chưa, nên tự tìm hiểu và đánh giá). Còn giải pháp tốt hơn nữa là dùng Google Spreadsheet hay các bảng tính online cloud thì sẽ tốt hơn nhiều (nhưng khi đó lại dính bảo mật dữ liệu và phụ thuốc tốc độ internet (đợi 5G thì chắc ngon)
(1) nhờ bác xem hộ em cái này với, trên có ng làm cho em rồi nhưng giờ phát sinh khi nhiều ng dùng file trên mạng lan lại sợ chèn lên nhau nên e tách từng người ra.
Khi em bấm vào nút "nhập dữ liệu" (đã tạo sẵn), em sẽ nhập các dữ liệu (em có ghi chú các dữ liệu trong form này) và save vào các cột tương ứng
(2) Khi dữ liệu đã được save vào bảng, em ko muốn ai edit các cột này và tự động lưu các dữ liệu này sang sheet TK
e đã làm ví dụ, bác xem nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
em có edit code mà, kiểu thêm cột giá tiền ấy, khi search theo giá tiền thì nó ko hiển thị dấu . ngăn cách giữa các con số
Bài đã được tự động gộp:


(1) nhờ bác xem hộ em cái này với, trên có ng làm cho em rồi nhưng giờ phát sinh khi nhiều ng dùng file trên mạng lan lại sợ chèn lên nhau nên e tách từng người ra.
Khi em bấm vào nút "nhập dữ liệu" (đã tạo sẵn), em sẽ nhập các dữ liệu (em có ghi chú các dữ liệu trong form này) và save vào các cột tương ứng
(2) Khi dữ liệu đã được save vào bảng, em ko muốn ai edit các cột này và tự động lưu các dữ liệu này sang sheet TK
e đã làm ví dụ, bác xem nhé
Lạc sang chủ đề khác rồi,
Muốn thì post (viết) bài ở chủ đề mới, mọi người mới giúp, còn cứ kéo đuôi còn thằn lằn hoài thế này thì bao giờ xong
Vậy nhé, mở topic mới nhờ mọi người, ai rảnh thì giúp
 
Upvote 0
:***** Mà bác ơi. Xài file excel marco qua lan. K xài đc nhỉ. Có cách j khắc phục tạm k nhỉ ???
VN THUA BUỒN QUÁ, THUA PEL MỚI CAY
Bạn tham khảo và hỏi tiếp trong bài viết sau:
https://www.giaiphapexcel.com/diendan/threads/auto-save-để-update-csdl-khi-share-workbook.133238/#post-865485

https://www.giaiphapexcel.com/diendan/threads/auto-save-để-update-csdl-khi-share-workbook.133238/#post-865481
 
Upvote 0
Quên sửa lại mà không gửi file kèm
Đây nhé

Bác ơi mình có dùng code của bác để dùng nhưng khi mình tăng số cột trong list từ 7 lên 32 thì bị lỗi out of range thì fix sao vậy bác :(

Sub LOCDL(aStFind)
Const NO_COLUMNS = 32
Dim i As Long, j As Long, n As Long

If Not IsArray(arrStr) Then

With Sheet3
aR = .Range(.Range("A2"), .Cells(.Rows.Count, 1).End(xlUp)).Resize(, NO_COLUMNS).Value2
n = UBound(aR)
aRR = aR
For i = 1 To n
For j = 1 To 3
aRR(i, j) = UCase(aR(i, j))
Next j
Next i
End With

Else
n = UBound(aR)
End If


Dim aK, k As Long
ReDim aK(1 To 1)
Dim TIM As Boolean
Dim aTxt
aTxt = aStFind

If aTxt(0) = Space(1) Then
arrRes = aR
Exit Sub
End If

Dim aJ(1 To NO_COLUMNS), kj As Long
kj = 0
For j = 0 To NO_COLUMNS - 1

If aTxt(j) <> "" Then

kj = kj + 1
aJ(kj) = j
aTxt(j) = "*" & UCase(aTxt(j)) & "*"
End If
Next j
If kj = 0 Then arrRes = "": Exit Sub

k = 0
For i = 1 To n
TIM = True
For j = 1 To kj
If aRR(i, 1 + aJ(j)) Like aTxt(aJ(j)) Then

Else
TIM = False
Exit For
End If
Next j

If TIM Then
k = k + 1
ReDim Preserve aK(1 To k)
aK(k) = i
If k >= MAX_NUMBER_OF_ITEMS Then Exit For
End If
Next i

If k > 0 Then
ReDim arrRes(1 To k, 1 To NO_COLUMNS)
For i = 1 To k
For j = 1 To NO_COLUMNS
arrRes(i, j) = aR(aK(i), j)
Next j
Next
Else
arrRes = ""
End If

End Sub
 
Upvote 0
Bác ơi mình có dùng code của bác để dùng nhưng khi mình tăng số cột trong list từ 7 lên 32 thì bị lỗi out of range thì fix sao vậy bác :(

Sub LOCDL(aStFind)
Const NO_COLUMNS = 32
Dim i As Long, j As Long, n As Long

If Not IsArray(arrStr) Then

With Sheet3
aR = .Range(.Range("A2"), .Cells(.Rows.Count, 1).End(xlUp)).Resize(, NO_COLUMNS).Value2
n = UBound(aR)
aRR = aR
For i = 1 To n
For j = 1 To 3
aRR(i, j) = UCase(aR(i, j))
Next j
Next i
End With

Else
n = UBound(aR)
End If


Dim aK, k As Long
ReDim aK(1 To 1)
Dim TIM As Boolean
Dim aTxt
aTxt = aStFind

If aTxt(0) = Space(1) Then
arrRes = aR
Exit Sub
End If

Dim aJ(1 To NO_COLUMNS), kj As Long
kj = 0
For j = 0 To NO_COLUMNS - 1

If aTxt(j) <> "" Then

kj = kj + 1
aJ(kj) = j
aTxt(j) = "*" & UCase(aTxt(j)) & "*"
End If
Next j
If kj = 0 Then arrRes = "": Exit Sub

k = 0
For i = 1 To n
TIM = True
For j = 1 To kj
If aRR(i, 1 + aJ(j)) Like aTxt(aJ(j)) Then

Else
TIM = False
Exit For
End If
Next j

If TIM Then
k = k + 1
ReDim Preserve aK(1 To k)
aK(k) = i
If k >= MAX_NUMBER_OF_ITEMS Then Exit For
End If
Next i

If k > 0 Then
ReDim arrRes(1 To k, 1 To NO_COLUMNS)
For i = 1 To k
For j = 1 To NO_COLUMNS
arrRes(i, j) = aR(aK(i), j)
Next j
Next
Else
arrRes = ""
End If

End Sub
Phải chú ý tăng cả columns cho listbox
 
Upvote 0
Mình tăng rồi bạn ui, nhưng vẫn báo lỗi hình như chỉ cho add tối đa 10 cột trong 1 listbox thì phải :(
xem bài số 4 để biết cách
 
Upvote 0
Web KT

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

Back
Top Bottom