Hỏi cách tạo combo box thông minh (1 người xem)

Liên hệ QC

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

titanic

Thành viên hoạt động
Tham gia
25/5/10
Bài viết
161
Được thích
11
chào các anh/chị
em có thử tạo 1 combo box nhưng không đúng ý em lắm cho em hỏi trong excel mình có combox tự tìm ra các từ gần giống với yêu ký tự mình đánh vào dòng combox không . như mình đánh chữ "g" đi ( nó sẽ hiện ra 1 bảng từ 4 tới 5 lựa chon có chữ cái bắt đầu từ chữ "g" )
em có gửi ảnh minh họa . mọng các anh chỉ giúp cảm ơn nhiều -\\/.
 

File đính kèm

  • combox.png
    combox.png
    2.9 KB · Đọc: 2,125
chào các anh/chị
em có thử tạo 1 combo box nhưng không đúng ý em lắm cho em hỏi trong excel mình có combox tự tìm ra các từ gần giống với yêu ký tự mình đánh vào dòng combox không . như mình đánh chữ "g" đi ( nó sẽ hiện ra 1 bảng từ 4 tới 5 lựa chon có chữ cái bắt đầu từ chữ "g" )
em có gửi ảnh minh họa . mọng các anh chỉ giúp cảm ơn nhiều -\\/.

Thật ra cũng chỉ là bài toán LỌC CÓ ĐIỀU KIỆN thôi
Nếu là tôi thì tôi không dùng ComboBox mà kết hợp giữa TextBox với ListBox: Gõ từ khóa vào TextBox, ListBox sẽ hiện những phần tử gần đúng
Dạng này cũng đã post nhiều trên diễn đàn rồi
 
em gửi file mô tả chi tiết anh chỉ dùm em với hoặc chỉ cho em cách tìm bài tương tự em cám ơn
 

File đính kèm

Lần chỉnh sửa cuối:

File đính kèm

Lần chỉnh sửa cuối:
cảm ơn anh cái file anh gửi thật là hơn cả tuyệt vời , nhưng làm phiền anh hướng dẫn chi tiết giúp em với . tại e trước giờ chưa dùng lập trình lần nào . em xin hậu tạ
 
Mình nhờ các bạn làm giúp text box hay listbox ... để khi mình click vào ô gỏ vài ký tự ví dụ gỏ ng nó sổ ra danh sách có chử ng cho mình chọn lựa,sau khi chọn xong click vào danh sách đó nó sẻ gán tên đó vào ô luôn. Mình có gởi file để các bạn xem giúp.
 

File đính kèm

Lần chỉnh sửa cuối:
Mình nhờ các bạn làm giúp text box hay listbox ... để khi mình click vào ô gỏ vài ký tự ví dụ gỏ ng nó sổ ra danh sách có chử ng cho mình chọn lựa,sau khi chọn xong click vào danh sách đó nó sẻ gán tên đó vào ô luôn. Mình có gởi file để các bạn xem giúp.

Bài này có thể giúp bạn
http://www.giaiphapexcel.com/forum/...ng-Validation-trong-tối-ưu-hóa-việc-nhập-liệu
 
Cám ơn bạn LienDong nhe, link bạn giới thiệu không phải là điều mình cần, cái mình cần có nêu rỏ trong file đính kèm nghĩa là mình muốn có được chức năng nhập liệu giống file Copy of xin huong dan chi cach tạo listbox.rar của bạn quanghai1969 , nhưng file của bạn quanghai1969 có nhược điểm là chỉ sổ ra list những từ có ký tự được gỏ vào sort ở từ đầu tiên thôi ví dụ khi gỏ chử t thì chỉ có xuất ra những từ có chử t đầu là

thanh phương
tuấn anh ag
tuấn anh mp
tuấn anh me

mà lại không xuất luôn tên người khác cũng có chử t ở những từ kế tiếp đó là :

nhật thiện
hoàng thiện
 
Cám ơn bạn LienDong nhe, link bạn giới thiệu không phải là điều mình cần, cái mình cần có nêu rỏ trong file đính kèm nghĩa là mình muốn có được chức năng nhập liệu giống file Copy of xin huong dan chi cach tạo listbox.rar của bạn quanghai1969 , nhưng file của bạn quanghai1969 có nhược điểm là chỉ sổ ra list những từ có ký tự được gỏ vào sort ở từ đầu tiên thôi ví dụ khi gỏ chử t thì chỉ có xuất ra những từ có chử t đầu là

thanh phương
tuấn anh ag
tuấn anh mp
tuấn anh me

mà lại không xuất luôn tên người khác cũng có chử t ở những từ kế tiếp đó là :

nhật thiện
hoàng thiện
Bạn mở Module2 trong file ra, thay đoạn code này vào là được như ý rồi
PHP:
Sub loc()
Dim kq(1 To 10000, 1 To 1), dl(), i, j
With Sheet2
   dl = .Range(.[a2], .[a65536].End(3)).Value
End With
For i = 1 To UBound(dl)
   If dl(i, 1) <> "" Then
      If dl(i, 1) Like "*" & Sheet1.TextBox1.Value & "*" Then
         j = j + 1
         kq(j, 1) = dl(i, 1)
      End If
   End If
Next
If j Then Sheet1.ListBox1.List = kq
End Sub
 
Bạn mở Module2 trong file ra, thay đoạn code này vào là được như ý rồi
PHP:
Sub loc()
Dim kq(1 To 10000, 1 To 1), dl(), i, j
With Sheet2
   dl = .Range(.[a2], .[a65536].End(3)).Value
End With
For i = 1 To UBound(dl)
   If dl(i, 1) <> "" Then
      If dl(i, 1) Like "*" & Sheet1.TextBox1.Value & "*" Then
         j = j + 1
         kq(j, 1) = dl(i, 1)
      End If
   End If
Next
If j Then Sheet1.ListBox1.List = kq
End Sub


Cho em hỏi ví dụ ta có thêm cột B "địa chỉ", Cột C " điện thọai" ở Sheet Khách hàng thì làm sao có thể khi chọn tên xong thì địa chỉ và điện thọai cùng hiện kg? (cho thuận tiện khỏi dùng hàm Vlookup)
Em cảm ơn!
 
Cho em hỏi ví dụ ta có thêm cột B "địa chỉ", Cột C " điện thọai" ở Sheet Khách hàng thì làm sao có thể khi chọn tên xong thì địa chỉ và điện thọai cùng hiện kg? (cho thuận tiện khỏi dùng hàm Vlookup)
Em cảm ơn!
Bên trong file có Sub này. Thêm dòng màu đỏ vào thay thế cho hàm Vlookup
Mã:
Private Sub ListBox1_Click()
ActiveCell.Value = Sheet1.ListBox1.Value
[COLOR=#ff0000]ActiveCell.Offset(, 1) = Sheet2.[A:A].Find(ActiveCell).Offset(, 1)[/COLOR]
ActiveCell.Activate
Hide
End Sub
Hoăc là tạo Listbox có 2 cột
Nếu có nhiều cột thì dùng vòng lặp để lấy dữ liệu từ listbox ra
Mã:
Private Sub ListBox1_Click()
ActiveCell = Sheet1.ListBox1.Column(0)
ActiveCell.Offset(, 1) = Sheet1.ListBox1.Column(1)
ActiveCell.Activate
Hide
End Sub
 
Lần chỉnh sửa cuối:
Bạn mở Module2 trong file ra, thay đoạn code này vào là được như ý rồi
PHP:
Sub loc()
Dim kq(1 To 10000, 1 To 1), dl(), i, j
With Sheet2
   dl = .Range(.[a2], .[a65536].End(3)).Value
End With
For i = 1 To UBound(dl)
   If dl(i, 1) <> "" Then
      If dl(i, 1) Like "*" & Sheet1.TextBox1.Value & "*" Then
         j = j + 1
         kq(j, 1) = dl(i, 1)
      End If
   End If
Next
If j Then Sheet1.ListBox1.List = kq
End Sub

Cám ơn bạn quanghai1969 nhé, bạn ơi mình muốn khi gõ từ không dấu nó vẫn xổ ra luôn những từ có dấu thì phải làm sao ?, ví dụ gỏ e thì nó xổ xuống cả từ có chữ e và cã các từ có chử ê , é , ẻ , ề .... cụ thể (trong file Copy of xin huong dan chi cach tạo listbox )gõ e thì ta được

lê lai
điền phong
tuấn anh me
nhật thiện
hoàng thiện
 
Lần chỉnh sửa cuối:
Cám ơn bạn quanghai1969 nhé, bạn ơi mình muốn khi gõ từ không dấu nó vẫn xổ ra luôn những từ có dấu thì phải làm sao ?, ví dụ gỏ e thì nó xổ xuống cả từ có chữ e và cã các từ có chử ê , é , ẻ , ề .... cụ thể (trong file Copy of xin huong dan chi cach tạo listbox )gõ e thì ta được

lê lai
điền phong
tuấn anh me
nhật thiện
hoàng thiện
Muốn thì có thôi mà. Xem file coi đúng chưa.
 

File đính kèm

Muốn thì có thôi mà. Xem file coi đúng chưa.

Cám ơn bạn quanghai1969 nhiều, bạn xem giúp mình copy mấy cái code của file: Copy of xin huong dan chi cach tạo listbox vào file của mình nhưng chỉ có cột khách hàng chạy được còn cột Địa điểm giao hàng không được là sao vậy bạn ?
 

File đính kèm

Cám ơn bạn quanghai1969 nhiều, bạn xem giúp mình copy mấy cái code của file: Copy of xin huong dan chi cach tạo listbox vào file của mình nhưng chỉ có cột khách hàng chạy được còn cột Địa điểm giao hàng không được là sao vậy bạn ?

Mấy vụ này mình kém lắm. Thử thế này xem sao
 

File đính kèm

Hay quá bạn ơi đúng ý mình rồi, bạn giỏi quá, mình không hiểu tí gì về VBA code bạn làm, mình có thể học hỏi ở web nào hả bạn? cám ơn bạn rất nhiều.
Bạn học trên GPE đã là quá quá đủ rồi
Bạn học hết được các chiêu thức VBA trên GPE chắc còn dài dài nữa
Bạn tự search đi
 
Bạn học trên GPE đã là quá quá đủ rồi
Bạn học hết được các chiêu thức VBA trên GPE chắc còn dài dài nữa
Bạn tự search đi

ý của mình là nhờ các bạn chỉ giúp link học hỏi những kiến thức về vba excell ở tại GPE này, vì hầu như tất cả bài viết về các code của testbox listbox .....rất ít được chú thích, mình không hiểu trong code viết như thế nghĩa là gì, vì sao lại viết như thế.... cho nên khi thấy bài nào gần giống yêu cầu của mình thì cứ copy code dán vào file của mình,làm như thế chỉ mang tính hên xui, thế là dường như không thể làm được gì cã. Chứ ở GPE kiến thức bao la học đến già vẫn chưa hết
 
Lần chỉnh sửa cuối:
ý của mình là nhờ các bạn chỉ giúp link học hỏi những kiến thức về vba excell ở tại GPE này, vì hầu như tất cả bài viết về các code của testbox listbox .....rất ít được chú thích, mình không hiểu trong code viết như thế nghĩa là gì, vì sao lại viết như thế.... cho nên khi thấy bài nào gần giống yêu cầu của mình thì cứ copy code dán vào file của mình,làm như thế chỉ mang tính hên xui, thế là dường như không thể làm được gì cã. Chứ ở GPE kiến thức bao la học đến già vẫn chưa hết
Cho dù có chú thích cũng khó hiểu nếu bạn chưa có nền tảng cơ bản về VBA. Cứ từ từ học rồi sẽ hiểu thôi. Nếu muốn nhanh thì chỉ còn cách đến trường lớp học bài bản.
 
Mấy vụ này mình kém lắm. Thử thế này xem sao

bạn ơi tất cả đều rất tuyệt chỉ còn 1 vấn đề là khi cần gỏ gấp một tên mới hay một địa điểm mới không nằm trong sheet Khach_hang thì không thể nào nhập trực tiếp vào trong ô được, bạn giúp trường hợp này luôn nhe bạn
 
bạn ơi tất cả đều rất tuyệt chỉ còn 1 vấn đề là khi cần gỏ gấp một tên mới hay một địa điểm mới không nằm trong sheet Khach_hang thì không thể nào nhập trực tiếp vào trong ô được, bạn giúp trường hợp này luôn nhe bạn
Tìm và thêm dòng code màu xanh vào code này
Mã:
Private Sub TextBox1_Change()
[COLOR=#0000ff]ActiveCell = Sheet1.TextBox1.Value[/COLOR]
loc
End Sub
 
Tìm và thêm dòng code màu xanh vào code này
Mã:
Private Sub TextBox1_Change()
[COLOR=#0000ff]ActiveCell = Sheet1.TextBox1.Value[/COLOR]
loc
End Sub

Bạn hay quá giống như nhà phép thuật vậy hô biến thành gì là ra ngay. Hì hì... bạn ơi mình mới phát hiện ra nếu lở nhập dư tên khách hàng hoặc địa điểm giao hàng thì xóa nội dung trong ô như thế nào đây làm phiền bạn giúp giùm luôn ghen.
 
Bạn hay quá giống như nhà phép thuật vậy hô biến thành gì là ra ngay. Hì hì... bạn ơi mình mới phát hiện ra nếu lở nhập dư tên khách hàng hoặc địa điểm giao hàng thì xóa nội dung trong ô như thế nào đây làm phiền bạn giúp giùm luôn ghen.
Chọn ô cần xóa hay sửa gì đó, chạm vào thanh spacebar là xóa rồi
 
Bạn hay quá giống như nhà phép thuật vậy hô biến thành gì là ra ngay. Hì hì... bạn ơi mình mới phát hiện ra nếu lở nhập dư tên khách hàng hoặc địa điểm giao hàng thì xóa nội dung trong ô như thế nào đây làm phiền bạn giúp giùm luôn ghen.
phải hay hơn nhà phép thuật chứ, vì máy nhà phép thuật đó thường chỉ là nhà <ảo thuật> lừa mắt người xem thôi, còn đây là muốn gì có náy 100% hàng chính hiệu
 
Bạn quanghai1969 mến mình thấy khi gỏ từ --> ra list danh sách chọn lựa, ở bước này nếu bạn có thể thêm thao tác dùng bàn phím (nhóm phím điều khiển con trỏ lên, xuống, qua, lại ) để chọn tên trong danh sách xổ ra xong bấm phím enter là tên được chọn sẻ nhập vào ô luôn không cần đến thao tác click chuột để chọn, giống như khi mình gỏ từ tìm kiếm trên google cũng ra danh sách, mình chỉ cần bấm phím trỏ xuống là dòng chọn xuất hiện trong danh sách và nó chạy lên hoặc xuống theo phím bấm dời lên xuống, khi đã xác định đúng dòng mình chọn chỉ cần bấm phím enter là dòng đó gắn vào thanh dò tìm google.Như vậy thao tác nhập dữ liệu sẻ khỏe hơn.
 
Bạn quanghai1969 mến mình thấy khi gỏ từ --> ra list danh sách chọn lựa, ở bước này nếu bạn có thể thêm thao tác dùng bàn phím (nhóm phím điều khiển con trỏ lên, xuống, qua, lại ) để chọn tên trong danh sách xổ ra xong bấm phím enter là tên được chọn sẻ nhập vào ô luôn không cần đến thao tác click chuột để chọn, giống như khi mình gỏ từ tìm kiếm trên google cũng ra danh sách, mình chỉ cần bấm phím trỏ xuống là dòng chọn xuất hiện trong danh sách và nó chạy lên hoặc xuống theo phím bấm dời lên xuống, khi đã xác định đúng dòng mình chọn chỉ cần bấm phím enter là dòng đó gắn vào thanh dò tìm google.Như vậy thao tác nhập dữ liệu sẻ khỏe hơn.
Bạn còn yêu cầu gì thì suy nghĩ và cung cấp thông tin 1 lần nhé. Code viêt xong sửa lại mệt lắm.
Cung cấp cái file của bạn luôn để mình có thể nhìn thấy du liệu thật của bạn và viết cho đúng yêu cầu. Nếu không có gi thay đổi thì 1 tuần sau quay lại nhé.
 
Bạn còn yêu cầu gì thì suy nghĩ và cung cấp thông tin 1 lần nhé. Code viêt xong sửa lại mệt lắm.
Cung cấp cái file của bạn luôn để mình có thể nhìn thấy du liệu thật của bạn và viết cho đúng yêu cầu. Nếu không có gi thay đổi thì 1 tuần sau quay lại nhé.

Depature > Connection ?
Hay là Departure> Connection
Em không hiểu?
 
Bạn còn yêu cầu gì thì suy nghĩ và cung cấp thông tin 1 lần nhé. Code viêt xong sửa lại mệt lắm.
Cung cấp cái file của bạn luôn để mình có thể nhìn thấy du liệu thật của bạn và viết cho đúng yêu cầu. Nếu không có gi thay đổi thì 1 tuần sau quay lại nhé.



Em chào Anh Quanghai1969 ! Code này của Anh hay quá. Em có vài ý ở dưới mong Anh giúp đỡ.


- Em thấy các ô đã chọn. Nếu muốn xóa thì ko xóa được (em thử đặt con trỏ chuột vào ô có dữ liệu rồi nhấn phím spacebar, hoặc delete, hoặc backspace cũng ko thấy xóa được). Mong Anh chỉ giúp.

- Khi gõ từ gợi nhớ -> list danh sách xổ ra. Nếu sử dụng thêm được nhóm phím điều khiển con trỏ -> sang phải, rồi -> lên, xuống. Để chọn tên trong list danh sách xổ ra, xong nhấn phím enter là tên được chọn sẽ nhập vào ô luôn. Như vậy thì khi nhập dữ liệu sử dụng bàn phím nhiều sẽ rất tiện. Mong Anh bổ sung thêm.

- Nếu sheet "Lenh.giao.hang" và "Bang.ke.ban.hang" có thêm cột "Tên hàng". Để cột "Tên hàng" cũng chọn được list danh sách như cột "Khách hàng" và "Địa điểm giao hàng". Thì phải làm thế nào được Anh.

Mong Anh chỉnh sửa code file đính kèm giúp Em. Cảm ơn Anh rất nhiều!

 

File đính kèm

Lần chỉnh sửa cuối:
Em chào Anh Quanghai1969 ! Code này của Anh hay quá. Em có vài ý ở dưới mong Anh giúp đỡ.


- Em thấy các ô đã chọn. Nếu muốn xóa thì ko xóa được (em thử đặt con trỏ chuột vào ô có dữ liệu rồi nhấn phím spacebar, hoặc delete, hoặc backspace cũng ko thấy xóa được). Mong Anh chỉ giúp.



- Khi gõ từ gợi nhớ -> list danh sách xổ ra. Nếu sử dụng thêm được nhóm phím điều khiển con trỏ -> sang phải, rồi -> lên, xuống. Để chọn tên trong list danh sách xổ ra, xong nhấn phím enter là tên được chọn sẽ nhập vào ô luôn. Như vậy thì khi nhập dữ liệu sử dụng bàn phím nhiều sẽ rất tiện. Mong Anh bổ sung thêm.

- Nếu sheet "Lenh.giao.hang" và "Bang.ke.ban.hang" có thêm cột "Tên hàng". Để cột "Tên hàng" cũng chọn được list danh sách như cột "Khách hàng" và "Địa điểm giao hàng". Thì phải làm thế nào được Anh.

Mong Anh chỉnh sửa code file đính kèm giúp Em. Cảm ơn Anh rất nhiều!


Bài này chắc đáp ứng được cho cả 2 bạn 1 lúc nhỉ! Thử xem, nếu chưa thoả mản thì mần tiếp. Mình thì kiểu gì cũng mần hết. Hỏng trúng ráng chịu.
 

File đính kèm

Anh ơi sheet "Bang.ke.ban.hang" cần phải chỉnh code như thế nào để chạy được vậy Anh? Với các Danh mục thì để chung hết vào 1 sheet ạ (chắc tách ra thì code sẽ dài phải ko Anh). Các vấn đề của Em đưa ra ở trên đã được Anh giải quyết Ok hết rồi.
Code này thật tuyệt vời. Cảm ơn Anh Quanghai1969 rất nhiều. Chúc Anh và Gia đình ngủ ngon và có những giấc mơ Hạnh Phúc!
 
Lần chỉnh sửa cuối:
Anh ơi sheet "Bang.ke.ban.hang" cần phải chỉnh code như thế nào để chạy được vậy Anh? Với các Danh mục thì để chung hết vào 1 sheet ạ (chắc tách ra thì code sẽ dài phải ko Anh). Các vấn đề của Em đưa ra ở trên đã được Anh giải quyết Ok hết rồi.
Code này thật tuyệt vời. Cảm ơn Anh Quanghai1696 rất nhiều. Chúc Anh và Gia đình ngủ ngon và có những giấc mơ Hạnh Phúc!

Ôi quên để ý cái sheet Bang Ke Ban Hang
 

File đính kèm

Code của Anh thật tuyệt. Cảm ơn Anh rất nhiều! Anh đi nghỉ sớm để đảm bảo sức khỏe Anh ạ!
Anh QuanHai có người quan tâm sức khỏe rồi nha. vậy là có thêm 1 điểm chung của tungnguyen rôi nha
Đúng là 2 người nhưng lại có rất nhiều điểm giống nhau:
I.Giống nhau
1. Sống tại Bình dương
2. Đẹp trai chịu không nổi
3. Đam mê GPE
4. Ăn nói nhẹ nhàng
n. ....
II. Khác nhau
1. Có nhiều cô gái trẻ đẹp đeo đuổi Tungnguyen_kt nhưng Quanghai thì ở không
2. Tungnguyen_kt đi xe 2 bánh nhưng Quanghai di xe buýt nhiều bánh hơn
3. Khi uống bia thì Tungnguyen_kt uống 1/2 thùng không chạy xe nổi, nhưng Quanghai thì không nhúc nhích (nằm bất động)
n...
 
Bài này chắc đáp ứng được cho cả 2 bạn 1 lúc nhỉ! Thử xem, nếu chưa thoả mản thì mần tiếp. Mình thì kiểu gì cũng mần hết. Hỏng trúng ráng chịu.

Cám ơn bạn quanghai1969 rất.. rất nhiều lần này bạn làm lại quả là trên cả tuyệt vời luôn mình đang khát khao có được code như thế đó.
 
Em chào Anh Quanghai1969 ! Code hôm trước của Anh em thấy tuyệt quá, muốn ứng dụng thử. Nhưng khi em thử thêm sheettạo mới các cột "Tên hàng", "Khu vực giao", "Tên kho", "Khách hàng". Thì không biết cách, Ví dụ cột "Tên hàng" thì chỉnh code như thế nào để nó lấy đúng "Tên hàng". Muốn hỏi Anh mấy hôm trước nhưng ngại. Ngồi mấy ngày nay rồi mày mò nhưng ko được. Hôm nay đành liều lên đây nhờ Anh giúp. Mong Anh sủa code trong file giúp em lại để em có thểm tham khảo code của Anh. Em cảm ơn Anh!
 

File đính kèm

Lần chỉnh sửa cuối:
Em chào Anh Quanghai1969 ! Code hôm trước của Anh em thấy tuyệt quá, muốn ứng dụng thử. Nhưng khi em thử thêm sheettạo mới các cột "Tên hàng", "Khu vực giao", "Tên kho", "Khách hàng". Thì không biết cách, Ví dụ cột "Tên hàng" thì chỉnh code như thế nào để nó lấy đúng "Tên hàng". Muốn hỏi Anh mấy hôm trước nhưng ngại. Ngồi mấy ngày nay rồi mày mò nhưng ko được. Hôm nay đành liều lên đây nhờ Anh giúp. Mong Anh sủa code trong file giúp em lại để em có thểm tham khảo code của Anh. Em cảm ơn Anh!

Tốt nhất nên bố trí các cột giống nhau sẽ dễ viết code hoặc sử dụng công thức cũng đơn giản hơn. Nhìn vào thì cũng khoa học hơn. Nếu muốn chèn cột vào cũng nên chèn hết các cột và các sheet, không nên làm tùy hứng.
 

File đính kèm

Cảm ơn Anh Quanghai1969 rất rất nhiều! Hihi... Anh mới sửa lại tính năng mở list xổ xuống ngay ở dưới hay quá. Nó vừa đẹp lại vừa tự động giãn theo độ rộng của cột hiện tại. Rồi dòng có dữ liệu rồi thì ko hiện bảng nữa rất hay. Anh có nhiều ý tưởng thật. Cảm ơn Anh.
 
Lần chỉnh sửa cuối:
Cảm ơn Anh Quanghai1696 rất rất nhiều! Hihi... Anh mới sửa lại tính năng mở list xổ xuống ngay ở dưới hay quá. Nó vừa đẹp lại vừa tự động giãn theo độ rộng của cột hiện tại. Rồi dòng có dữ liệu rồi thì ko hiện bảng nữa rất hay. Anh có nhiều ý tưởng thật. Cảm ơn Anh.
Chú ý có thể điều khiển thoái mái bằng các phím mũi tên và phím Tab, Delete và phím Enter
Mà hình như bàn phím của bạn bi hư rồi hay sao ấy, lần nào cũng gõ là 1696, hic.
 
Lần chỉnh sửa cuối:
Anh ạ. Em tạo thử một file mới và làm y hệt các sheet và copy toàn bộ code như file Anh đã sửa code cho Em lúc nãy. Nhưng nó bị lỗi. Anh xem giúp Em xem nó bị lỗi gì và cách xử lý giúp Em Anh nhé. Cảm ơn Anh. Chúc Anh và Gia đình những ngày cuối tuần vui vẻ!
-----------------------------------------------------------------------
Anh Quanghai1969 và các Bạn xem giúp em 1 tay. Xem lỗi là gì với ạ. Em copy nguyên như file gốc mà ko hiểu lỗi tại sao lại ko được.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Anh Quanghai1969 và các Bạn xem giúp em 1 tay. Xem lỗi là gì với ạ. Em copy nguyên như file gốc mà ko hiểu lỗi tại sao lại ko được.
Phải vẽ cái textbox và cái listbox cho mỗi sheet chứ. Bạn không có tí căn bản nào thì đừng quậy nữa nhé. Học cơ bản trước rồi tha hồ edit code.
 
Phải vẽ cái textbox và cái listbox cho mỗi sheet chứ. Bạn không có tí căn bản nào thì đừng quậy nữa nhé. Học cơ bản trước rồi tha hồ edit code.
Dạ vầng. Em rất cảm ơn Anh đã nhiệt tình giúp đỡ. Mặc dù rất muốn tìm hiểu code này để có thể ứng dụng. Nhưng đành dừng lại vậy.
-----------------------------------------------------------------------
Phải vẽ cái textbox và cái listbox cho mỗi sheet chứ. Bạn không có tí căn bản nào thì đừng quậy nữa nhé. Học cơ bản trước rồi tha hồ edit code.
Vui quá. Nghe Anh em bổ sung Textbox và Listbox Ok luôn Anh ạ. Dùng các hàm bình thường thì em cũng biết. Nhưng VBA thì em chưa được học. Ngày trước có môn học pascal thấy khó ghê. Bây giờ thấy VBA em cũng run. Hôm vừa rồi em mới mua quyển sách "Lập trình VBA trong Excel" của Anh Phan Tự Hướng biên soạn. Em thấy cái này cần phải giỏi toán phải ko Anh.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Vui quá. Nghe Anh em bổ sung Textbox và Listbox Ok luôn Anh ạ. Dùng các hàm bình thường thì em cũng biết. Nhưng VBA thì em chưa được học. Ngày trước có môn học pascal thấy khó ghê. Bây giờ thấy VBA em cũng run. Hôm vừa rồi em mới mua quyển sách "Lập trình VBA trong Excel" của Anh Phan Tự Hướng biên soạn. Em thấy cái này cần phải giỏi toán phải ko Anh.

Ai biết đâu, mình dốt toán nhất đây nè mà cũng học được đấy thôi. Cuốn sách đó nghe nói rất hay nhưng mình chưa có dịp xem qua.
 
Lần chỉnh sửa cuối:
Bạn quanghai1969 mến mình thấy code bạn tạo cho mình và bạn ndhmoney686 rất hay, hôm nay mình xin hỏi bạn, bạn có thể phối hợp code của bạn vào cửa sổ tìm kiếm Find and Replace trong excell được không ? Mình thấy chức năng tìm Find and Replace chỉ dùng tốt trong trường hợp bảng tính ngắn và đã được Sort còn trong trường hợp bản tính dài khoảng 2000 dòng và không được Sort thì việc tìm kiếm không khỏe tí nào, gõ ít kí tự thì tìm rất lâu và mệt mắt, nếu gỏ nhiều kí tự mà gõ không chính xác thì máy tìm không ra. Nếu ở hộp gõ kí tự Find what của cửa sổ Find and Replace mà được tích hợp code của bạn, thì chỉ cần gõ kí tự vào --> xổ ra list danh sách chọn lựa --> chọn đúng tên cần tìm enter rồi enter thế là một phát duy nhất khung chọn ô sẻ chọn chính xác ô chứa tên mình cần tìm.
 
Bạn quanghai1969 mến mình thấy code bạn tạo cho mình và bạn ndhmoney686 rất hay, hôm nay mình xin hỏi bạn, bạn có thể phối hợp code của bạn vào cửa sổ tìm kiếm Find and Replace trong excell được không ? Mình thấy chức năng tìm Find and Replace chỉ dùng tốt trong trường hợp bảng tính ngắn và đã được Sort còn trong trường hợp bản tính dài khoảng 2000 dòng và không được Sort thì việc tìm kiếm không khỏe tí nào, gõ ít kí tự thì tìm rất lâu và mệt mắt, nếu gỏ nhiều kí tự mà gõ không chính xác thì máy tìm không ra. Nếu ở hộp gõ kí tự Find what của cửa sổ Find and Replace mà được tích hợp code của bạn, thì chỉ cần gõ kí tự vào --> xổ ra list danh sách chọn lựa --> chọn đúng tên cần tìm enter rồi enter thế là một phát duy nhất khung chọn ô sẻ chọn chính xác ô chứa tên mình cần tìm.
Cái hộp thoại của Excel thì không thể can thiệp được.
Tuy nhiên nếu bạn có nhu cầu thế nào thì gởi file lên. Biết đâu có giải pháp khác.
 
Mình gởi file lên bạn xem giúp nhé, mình xin cám ơn bạn.


topic dài quá ên mình không đọc hết, không biết các bạn đã tạo những gì rồi, mình gởi bài theo yêu cầu mới nhất của bạn, bạn xem có kết hợp với những gì đã có sẳn chưa nha.

trong yêu câu thứ nhât của bạn, mình kết hơp tính năng của combobox và Find, sau khi cho ở combo box nó sẻ nhảy tới cell chưa giá trị đó.

yêu cầu thứ 2 thì mình chỉ tô đỏ các giá trị sắp hết hạn.
xem sửa lại cho phù hợp nha
 

File đính kèm

topic dài quá ên mình không đọc hết, không biết các bạn đã tạo những gì rồi, mình gởi bài theo yêu cầu mới nhất của bạn, bạn xem có kết hợp với những gì đã có sẳn chưa nha.

trong yêu câu thứ nhât của bạn, mình kết hơp tính năng của combobox và Find, sau khi cho ở combo box nó sẻ nhảy tới cell chưa giá trị đó.

yêu cầu thứ 2 thì mình chỉ tô đỏ các giá trị sắp hết hạn.
xem sửa lại cho phù hợp nha

Trước hết cho mình cám ơn bạn đã nhiệt tình gúip đở, nhưng bạn ơi ở yêu cầu thứ nhất bạn nói kết hơp tính năng của combobox và Find sao mình không thấy combobox bạn tạo ở đâu hết. Còn ở yêu cầu thứ 2 bạn có cách sử lý cũng hay nhưng có lẻ vì yêu cầu của mình chưa rỏ ràng, mình muốn khi mở excell thì sẻ xuất hiện một bảng thông báo tương tự như bạn đã tạo nhưng nội dung trong bảng hiện ra luôn những mặt hàng sắp hết hạn và số lượng hàng, giống như mình tạo mẩu ví dụ trong file đó bạn, mình xin giải thích thêm: khi mở excell -->hiện bảng thông báo, khi đó bảng thông báo sẻ dò tìm những mặt hàng sắp hết hạn trong bảng tính rồi gán vào--> hiện ra trong bảng thông báo luôn cả về tên hàng và số lượng.
 
Lần chỉnh sửa cuối:
combobox thì mình đặt ở dòng đầu của sheet "GOC" (dòng thứ 3-4)
yêu cầu thứ 2 thì mình tạo cho bạn một listbox, chứa các thông tin hang sap hết hạn.
tuy nhiên nó bị một số hạn chế như sau:
1/mình chưa sap xếp cho nó thẳng hàng được, mình có thử dùng listbox 3 cột nhưng nó chỉ lấy giá trị cuối cùng
2/về cách tính hết hạn: trong một năm thì dể rồi: lấy tháng hiện tại-tháng chứa trong cell, nhưng nếu 2 năm khác nhau thì mình rối qua chưa tính được.
bạn tư nguyên cứ cải tiến thêm nha
 

File đính kèm

combobox thì mình đặt ở dòng đầu của sheet "GOC" (dòng thứ 3-4)
yêu cầu thứ 2 thì mình tạo cho bạn một listbox, chứa các thông tin hang sap hết hạn.
tuy nhiên nó bị một số hạn chế như sau:
1/mình chưa sap xếp cho nó thẳng hàng được, mình có thử dùng listbox 3 cột nhưng nó chỉ lấy giá trị cuối cùng
2/về cách tính hết hạn: trong một năm thì dể rồi: lấy tháng hiện tại-tháng chứa trong cell, nhưng nếu 2 năm khác nhau thì mình rối qua chưa tính được.
bạn tư nguyên cứ cải tiến thêm nha

Cám ơn bạn nhapmon nhé, yêu cầu 2 cũng khá tốt rồi, xin lỗi bạn vì sơ xuất không nhìn thấy combobox nhưng nhờ vậy mà mình nãy ra sáng ý, mình thấy nếu bạn làm cho combobox cứ nổi và lướt trên bảng tính giống y như cửa sổ Find and Replace thì sẻ rất khỏe cho việc nhập và tìm kiếm vì hiện tại mổi lần tìm một mặt hàng là phải cuộn về đầu trang mới tìm thấy combobox để nhập từ tìm kiếm.
Ngoài ra mình muốn bạn cải tiến lại code để gỏ ít ký tự mà vẫn xổ ra list danh sách đầy đủ nhất, yêu cầu này mình có nói rỏ ở trang 2 mục #13, trang 3 mục #28 và đã được bạn quanghai1969 xử lý rất tốt ở trang 4 mục 34. Mình tóm tắt yêu cầu này: click vào hộp tìm kiếm combobox chỉ cần gỏ 2-3 ký tự gợi ý thôi là tên mặt hàng đã xuất hiện trong danh sách xổ ra rồi, tiếp tục dùng các phím lên xuống qua lại trên bàn phím để chọn đến đúng mặt hàng trong danh sách xong enter là mặt hàng đó gán vào hộp tìm kiếm, bấm enter thêm cái nữa khung chọn sẻ nhảy đến ô có mặt hàng mình chọn.
À bạn ơi để tăng thêm mặt hàng vào list dand sách xổ ra thì phải sửa code như thế nào vì danh sách bảng tính có đến khoảng 2000 dòng và còn tiếp tục tăng nữa.
 
Lần chỉnh sửa cuối:
bạn xem có đúng với yêu cầu của bạn chưa nha.

còn vấn đề hết hạn, thì bạn nên xem lại vì cách tính hiện nay không thể tính được nếu sang năm mơi.
ví dụ: hết hạn vào tháng 10/2012, tháng hiện tại là 01/2013, nó vẫn chưa gọi là hết hạn đó. mình thấy rối quá chưa tính được, bạn có cách nào không?
nó bị báo lỗi, bạn mở code vào sheet"GOC"
vào sub
Private Sub ComboBox1_LostFocus()
thêm dòng lệnh này
Dim NewVal As String
 

File đính kèm

Lần chỉnh sửa cuối:
bạn xem có đúng với yêu cầu của bạn chưa nha.

còn vấn đề hết hạn, thì bạn nên xem lại vì cách tính hiện nay không thể tính được nếu sang năm mơi.
ví dụ: hết hạn vào tháng 10/2012, tháng hiện tại là 01/2013, nó vẫn chưa gọi là hết hạn đó. mình thấy rối quá chưa tính được, bạn có cách nào không?
nó bị báo lỗi, bạn mở code vào sheet"GOC"
vào sub
Private Sub ComboBox1_LostFocus()
thêm dòng lệnh này
Dim NewVal As String

Mình dốt VBA lắm bạn ơi, vì vậy phải nhờ vả khắp nơi. Dòng lệnh Dim NewVal As String mình thêm vào không đúng chổ hay sao mà mình thử thêm 1 tên hàng vào bảng tính xong xem lại danh sách xổ ra không thấy có nó.
Private Sub ComboBox1_LostFocus()
'MakeScrollableWithMouseWheel(ComboBox1) = False
Dim NewVal As String
NewVal = Me.ComboBox1.Value

On Error Resume Next

Cells.Find(What:=NewVal, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate


On Error GoTo 0
End Sub

File bạn mới post lên bị lổi code hay sao nó cứ báo lổi hoài
Còn về vấn đề để combobox lướt trên bảng tính không biết có phải bạn phải tạo combobox lên form hay không giống như Find and Replace vậy đó
 
Lần chỉnh sửa cuối:
chỉnh lại theo yêu cầu của bạn, dưa vào mẫu của bạn QH tạo ra.
phần chép từ sheet thay giá sang sheet GocChung, do mình ko biết cthức mảng nên chỉ có thể viết cthức thường thôi. nếu số liệu quá lớn, và thấy nó chạy quá chậm thì post lại nhờ các anh viết lại code.
phần xóa màu thì, khi chép qua mình ấn định nó màu đỏ, và khi xóa thì cell nào màu đỏ nó sẻ xóa
 

File đính kèm

Lần chỉnh sửa cuối:
Mình dốt VBA lắm bạn ơi, vì vậy phải nhờ vả khắp nơi. Dòng lệnh Dim NewVal As String mình thêm vào không đúng chổ hay sao mà mình thử thêm 1 tên hàng vào bảng tính xong xem lại danh sách xổ ra không thấy có nó.
Private Sub ComboBox1_LostFocus()
'MakeScrollableWithMouseWheel(ComboBox1) = False
Dim NewVal As String
NewVal = Me.ComboBox1.Value

On Error Resume Next

Cells.Find(What:=NewVal, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate


On Error GoTo 0
End Sub

File bạn mới post lên bị lổi code hay sao nó cứ báo lổi hoài
Còn về vấn đề để combobox lướt trên bảng tính không biết có phải bạn phải tạo combobox lên form hay không giống như Find and Replace vậy đó
Nếu mục đích chính của bạn là tìm mã hàng và thay giá thì nên làm cách khác và thay hàng loạt. Ai lai thay giá từng cell. Tạo 1 list cần thay giá bấm nút 1 phát là xong.
 
Nếu mục đích chính của bạn là tìm mã hàng và thay giá thì nên làm cách khác và thay hàng loạt. Ai lai thay giá từng cell. Tạo 1 list cần thay giá bấm nút 1 phát là xong.
Chào bạn quanghai1969,mình rất vui được bạn quay lại giúp mình, hằng ngày giá hàng hóa luôn thay đổi có ngày chỉ một hai mặt hàng có lúc đến gần 20 mặt hàng, có cái là giá nguyên thùng có cái là giá lẻ hộp rồi có cái lại có thêm chiếc khấu, thuế....mình phải nhập vào những thông tin đó để qua công thức nắn lại thành 1 giá góc(ở file bang gia đính kèm mình đã cắt bớt các cột phụ đó rồi để cho gọn file và cũng vì lí do tế nhị). Vì vậy mình nghĩ phải dùng cách tìm thủ công từng mặt hàng rồi mới sửa từng cột (tùy theo mặt hàng). Bạn xem có cách nào chu toàn thì giúp mình với.
À mình thấy có một video clip này không biết có áp dụng được vào excell và file của mình không: http://www.youtube.com/watch?v=uu8zceGUxD8&list=UUD-OA6BFdsLn0Qeikdwnzgg
 
thôi mình post lại file đã sữa lỗi cho bạn nè.

còn combo box thì nó chỉ thực hiên được một chức năng là: khi bạn cho xong, nó nhảy tới cell mà bạn muốn sửa và bạn sửa trên cell đó, chứ không sửa trực tiếp trên combo bõ đâu. vì nếu bạn sửa trên combo bõ thì nó chỉ sửa được một cell còn quy cách, giá gốc là sao sửa?

ah, vấn đề nó ko cập nhật vào combobox là do dèine name chưa khai báo lại, dể mình khai báo thêm cho bạn

bạn thấy ý kiến bạn QuangHai có đúng ý bạn không? bạn địng thay thế từng cell hay thay thế nhiếu giá trị một lúc

bạn xem các đoạn code mình tạo ra, cái gì xài được thì kết hợp với những cái bạn có. tự xào nấu nha...hihihii

Cám ơn bạn rất nhiệt tình giúp mình, nói đến code đến VBA mình thật sự bó tay thôi bạn ạ. Mình là lính mới mà chỉ biết yêu cầu và đưa ra ý tưởng tốt để tạo ra những công cụ có thể giúp được nhiều người nhưng phải nhờ các bạn biến ý tưởng thành hiện thực còn mình cần nhiều thời gian học hỏi nữa mới có thể chung tay góp sức. File bạn post lại chạy tốt rồi enter khung nãy đúng vị trí mặt hàng rồi nhưng ở phần gỏ từ tìm kiếm vẫn chưa đúng ý mình với lại combobox sau khi tìm tên hàng xong nó không tự xóa nên khi click muốn gỏ vào combobox tìm tiếp phải xóa tên mặt hàng củ(như vậy là thừa thao tác không cần thiết) và combobox có lẻ bạn phải giới hạn lại chỉ mở trong cột số thứ tự thôi chứ dời đến ô nào củng ra combobox hết thì khi nhập liệu sẻ cảm thấy không thoải mái.
 
Lần chỉnh sửa cuối:
Chào bạn quanghai1969,mình rất vui được bạn quay lại giúp mình, hằng ngày giá hàng hóa luôn thay đổi có ngày chỉ một hai mặt hàng có lúc đến gần 20 mặt hàng, có cái là giá nguyên thùng có cái là giá lẻ hộp rồi có cái lại có thêm chiếc khấu, thuế....mình phải nhập vào những thông tin đó để qua công thức nắn lại thành 1 giá góc(ở file bang gia đính kèm mình đã cắt bớt các cột phụ đó rồi để cho gọn file và cũng vì lí do tế nhị). Vì vậy mình nghĩ phải dùng cách tìm thủ công từng mặt hàng rồi mới sửa từng cột (tùy theo mặt hàng). Bạn xem có cách nào chu toàn thì giúp mình với.
Mình không hình dung hết bạn cần gì vì bạn không cung cấp đủ thông tin.
Gởi bạn ý tưởng thay giá hàng loạt những mã cần thiết.
Nếu muốn có phương án tốt nhất thì bạn nên cung cấp file thật. Mình nghĩ không ai rảnh mà quan tâm đến cái bạn gọi là lý do tế nhị.
 

File đính kèm

Mình không hình dung hết bạn cần gì vì bạn không cung cấp đủ thông tin.
Gởi bạn ý tưởng thay giá hàng loạt những mã cần thiết.
Nếu muốn có phương án tốt nhất thì bạn nên cung cấp file thật. Mình nghĩ không ai rảnh mà quan tâm đến cái bạn gọi là lý do tế nhị.

Ý tưởng của bạn rất hay mình gởi file lên bạn xem giúp nhé
 

File đính kèm

Bạn quanghai1969 ơi, file mình gởi lên rồi bạn xem có cách nào giúp mình nhé.
 
Xem file có hiểu gì đâu mà giúp. Câu hỏi lúc đầu là 1 đường, giờ file thật là 1 nẻo khác xa quá trời mà.

Không phải khác xa đâu bạn mà là có 2 yêu cầu trong 1 file, mình quên nói cụ thể đấy.
Yêu cầu 1 là yêu cầu chánh mình muốn có một công cụ đơn giãn để tìm nhanh đến đúng mặt hàng cần tìm trong bảng giá(ở Sheet GOC CHUNG) để sữa giá: mình đã nhờ bạn can thiệp vào hộp thoại Find and Replace bạn trả lời không được, bảo mình gởi file lên để tìm giải pháp khác (cụ thể ở mục #49 trang 5). Yêu cầu này bạn nhapmon có giải pháp trợ giúp nhưng vẩn chưa phù hợp với ý mình lắm, đó là chưa làm cho combobox cứ nổi và lướt trên bảng tính giống y như cửa sổ Find and Replace nỗi trên bảng tính trong quá trình tìm kiếm tên hàng, và chưa tạo code cho combobox để khi chỉ cần gỏ hai đến ba ký tự là sổ list chọn mặt hàng giống cách bạn đã tạo cho mình ở file LENH GIAO HANG ( mình đã nêu ở mục #54 trang 6).Nếu không thể thực hiện được thì thôi chuyển qua làm theo cách khác đó là yêu cầu 2.
Yêu cầu thứ 2 xuất phát từ ý tưởng của bạn là sửa giá hàng loạt, ý tưởng này rất hay.
Nhưng do cách nhập giá của mình phức tạp ở chổ không nhập duy nhất ở một cột mà là nhiều cột vì vậy khi thực hiện phương pháp nầy bạn nên tạo một sheet phụ để nhập nháp trước tên các mặt hàng muốn sửa giá gồm:cột MAT HANG,nhap gia,qui ra hop,xuat mua,tang, chiec khau,thue và nên tạo thêm code nhập nhanh tên mặt hàng(code Bạn đã làm cho mình để nhập Tên Khách hàng-Địa điểm giao hàng ở file LENH GIAO HANG), khi thay giá hàng loạt chưa kịp xem giá củ là bao nhiêu để so sánh với giá mới nhập,không biết giá mới nhập là lên giá hay giảm giá, do đó nên có một nơi lưu tạm giá củ của những mặt hàng mới nhập để so sánh giá.
Dòng NHẬP THỬ GIÁ chỉ là để nháp không liên quang đến việc nhập giá.
Tuy 2 yêu cầu nhưng thực chất chỉ là một đó là sửa giá đơn giãn hơn và nhanh hơn. Vậy một lần nữa nhờ bạn xem có cách giải quyết nào không, mình xin chân thành cám ơn bạn.
Chúc bạn cùng gia đình năm mới sức khỏe dồi dào,hạnh phúc và vạn sự như ý.
 
Lần chỉnh sửa cuối:
Bạn quanghai1969 ơi mình trình bày như thế có chổ nào chưa rỏ không sao không thấy bạn giúp mình vậy ?
 
Bạn quanghai1969 ơi mình trình bày như thế có chổ nào chưa rỏ không sao không thấy bạn giúp mình vậy ?
Vì không hiểu nổi những gì bạn mô tả nên chịu thua. Viết càng nhiều càng thêm khó hiểu. Tốt nhất gởi dữ liệu. Minh hoạ dữ liệu vào và kết quả đầu ra. Có cái gì và nó sẽ thành cái gì. Cụ thể trên sheet thì may ra có người giúp. Mình thì hết khả năng rồi. Cố đợi các cao thủ khác nha. Nếu không ai giúp thì nên xem lại cách bạn mô tả nhé.
 
Mình trình bài dài là làm theo ý này đây :
Bạn còn yêu cầu gì thì suy nghĩ và cung cấp thông tin 1 lần nhé. Code viêt xong sửa lại mệt lắm.
Cung cấp cái file của bạn luôn để mình có thể nhìn thấy du liệu thật của bạn và viết cho đúng yêu cầu.


Mình xin lấy file của bạn QuangHai sửa lại(file mình thường hay nhắc đến) để minh họa nhé, các bạn xem có giúp được thì giúp mình rất cám ơn nếu không giúp mình cũng cám ơn các bạn đã đọc.

Ví dụ đầu tháng không có chương trình khuyến mãi toa hàng mình nhận từ người bán gồm các mặt hàng đều có đơn giá là giá tiền 1 hộp. Như vậy giá hộp này được nhập vào cột nhap gia(sheet GOC CHUNG), khi đó công thức ở cột ketq ti le và công thức ở cột GOC sẻ tính toán qui ra thành giá góc 1 hộp gán ở cột GOC(ví dụ trong sheet GOC CHUNG bạn thấy mặt hàng Basden(ô B18) có giá nhập 37000 vì vậy cột GOC cũng là 37000).
khi nhập giá tôi phải xem mặt hàng trên toa là tên gì( ví dụ tên hàng là Basden ) rồi nhập vào sheet GOC CHUNG bằng thao tác bấm control-F để hiện cửa sổ Find and Replace rồi gỏ 3 ký tự đầu tiên của tên hàng(Basden thì gỏ là bas) vào hộp Find what kế đến bấm enter từng cái một( hoặc click nút Find Next) để máy nẫy khung chọn cho đến khi mình thấy đúng tên hàng muốn nhập giá (khung chọn nẫy đến ô chứa tên hàng Basden), xong gỏ 37000 vào ô D18. Nhưng do sheet GOC CHUNG có đến gần 2000 dòng nên để tìm một mặt hàng phải gỏ nhiều lần mất nhiều thời gian và mệt mắt.

Vì vậy mình mong muốn có một công cụ giúp mình đơn giản thao tác tìm tên mặt hàng: chỉ vài thao tác gỏ và chọn là khung chọn đã nẫy ngay đến đúng ô chứa tên mặt hàng mình muốn nhập giá.

Đến giữa tháng có khuyến mãi sẻ kéo theo nhiều mặt hàng thay đổi giá bằng nhiều cách ,mình lấy 2 mặt hàng Barol và Barudon làm ví dụ.
Với Barol nếu mua nguyên thùng(1 thùng có 36 hộp) sẻ được giảm giá xuống 1 thùng còn 900.000(khi xuất hóa đơn không sài đơn giá hộp mà tính đơn giá là giá thùng),còn Barudon nếu mua đúng theo xuất mua thì cứ 30 hộp sẻ được tặng 3 hộp với giá mổi hợp là 50.000 và còn được chiếc khấu thêm 2% nữa. Như vậy mình làm như sau: ở sheet GOC CHUNG mình cũng bấm control -F ra cửa sổ Find and Replace gỏ Bar(để tìm Barol) vào hộp Find what, rồi bấm enter (sheet GOC CHUNG có gần 2000 mặt hàng nên phải bấm enter khá nhiều lần) cho đến khi khung chọn nẫy đúng ô có tên Barol(ở ô B16 : tức đã tìm thấy mặt hàng Barol ) và mình nhập giá như thế này: gỏ 900000 vào ô C16, gỏ 36 vào ô I16 như vậy công thức ở N16 và D16 chuyển đổi qui giá thùng thành giá góc 1 hộp gán vào ô D16 là 25000, xong tiếp tục tương tự gỏ Bar(để tìm Barudon) vào hộp Find what, rồi bấm enter cho máy tìm đến khi khung chọn nẫy đúng ô có tên Barol(ở ô B17) và mình nhập giá như thế này :gỏ 50000 vào ô C17, gỏ 30 vào ô J17, gỏ 3 vào ô K17 , gỏ 2 vào ô L17, công thức ô N17 và D17 chuyển giá xuất mua thành giá góc 1 hộp gán vào ô D17 là 44500.

Vì vậy mình mong muốn có một công cụ giúp mình đơn giản bớt đi thao tác tìm tên mặt hàng: chỉ vài thao tác gỏ và chọn là khung chọn đã nẫy ngay đến đúng ô chứa tên mặt hàng mình muốn nhập giá. Cụ thể ví dụ muốn tìm mặt hàng Barudon, ta chỉ cần gỏ b vào công cụ tìm kiếm là xổ ra danh sách các mặt hàng có chử b và cả chử B (nếu có thể: để đừng bị gàn buộc bởi cách gỏ chử thường hay chử hoa và chử có dấu với không dấu như gỏ e vẫn hiện ra e cã ê luôn)cho dù chử b có ở đầu ở giửa ở cuối từ hay ở từ thứ 2 hay từ thứ 3...miển là có chử b (hay chử B) thì sẻ được liệt kê ra hết vào list cho mình chọn lựa. Nếu danh sách xổ ra dài quá chưa thấy tên Barudon, ta gỏ tiếp chử a (tức là gỏ ba ) thì danh sách xổ ra được chọn lọc lại chỉ còn những tên có gán ba (và cả bA Ba, BA), nếu vẫn chưa thấy thì gỏ tiếp chử r (tức là gỏ bar) danh sách xổ ra tiếp tục chọn lọc rút gọn lần nữa theo nguyên tắc trên, đến đây mình nghĩ là cái tên Barudon sẻ có trong danh sách xổ ra rồi, tiếp tục ta bấm phím xuống(phím bấm điều khiển lên, xuống, qua trái, qua phải trên bàn phím đó), để dấu chọn chạy trên danh sách xổ ra đến cái tên Barudon, tiếp tục bấm phím enter rồi enter nữa là khung chọn ô sẻ nẫy đến đúng ngay ô có chứa tên Barudon.

Mình hy vọng lần này các bạn sẻ hiểu biết mình đang cần gì , đâu là đầu vào, đâu là đầu ra nhé. Mình đã cạn từ cạn ý rồi.
Nếu mong muốn của mình được đáp ứng thì đến đây củng đủ rồi.



Nếu các bạn đọc ở trên hiểu được rồi thì mới xem tiếp phần dưới đây nhé vì ở trên là mình nhập giá theo cách thủ công từng mặt hàng, còn phần này mình yêu cầu dựa trên ý tưởng của bạn QuangHai nó vừa hay hơn cũng vừa phức tạp hơn đừng trách mình viết không hiểu nhe. Ý tưởng của bạn QuangHai là nhập giá hàng loạt nhiều mặt hàng cùng 1 lúc. Ở phần này mình lấy file của bạn QuangHai có tạo sẳn code phối hợp cùng textbox và listbox sửa đổi lại giao diện hàng cột cho phù hợp với bảng giá của mình bên sheet ThayGia.

Ở cột B vùng màu xanh lá cây có listbox-textbox và code mà mình cứ nhắc đến hoài đó( lưu ý khi gỏ chử có phân biệt chử hoa và chử thường nhé),ví dụ khi click(hoặc dời khung chọn)đến ô B2-->xuất hiện textbox-listbox, gỏ A ở ô B2(tức textbox) list xổ ra những tên mặt hàng có trong danh sách của cột B(cột MAT HANG ở sheet GOC CHUNG) gồm những tên có chử A, tiếp tục gỏ c list sẻ thu gọn lại còn những tên có Ac(do mình muốn thay giá mặt hàng Acnotin 10)mình thấy có tên Acnotin 10 trong list rồi, tiếp tục bấm phím điều khiển chạy sang trái để chọn tên này, xong bấm enter thế là tên Acnotin 10 sẻ được nhập vào ô B2, tiếp tục nhập các số liệu còn lại là 10000 ở cột nhap gia, 10 ở cột xuat mua, 1 ở cột tang, 2 ở cột thue.(giống như trong sheet ThayGia đang có)
Tương tự bây giờ mình muốn thay giá mặt hàng Acylovir 400, ở ô B3 mình chỉ cần gỏ Ac là củng đủ thấy mặt hàng này, nếu gỏ thêm chử y(tức là gỏ Acy) thì list xổ ra càn gọn lại để cho mình chọn, tiếp tục bấm phím sang trái, rồi phím chạy xuống khi thấy dòng chọn chạy đến hàng có tên Acylovir 400 thì bấm enter thế là tên này sẻ nhập vào ô luôn, nhập tiếp các số liệu 50000 ,5 như trong bảng. xong bấm nút Thay Gia.

Yêu cầu lúc nầy là nút Thay Gia được viết code sao cho khi bấm nút Thay Gia tên các mặt hàng vừa nhập và các số liệu tương ứng với nó được tự động dò tìm tên mặt hàng trên cột MAT HANG của sheet GOC CHUNG để gắn các số liệu vào đúng vị trí tương ứng và tô màu vàng các ô vừa mới nhập như mình đã minh họa ở sheet GOC CHUNG,đồng thời tự động hiển thị sheet GOC CHUNG luôn(nghĩa đang ở sheet ThayGia thì nhãy qua sheet GOC CHUNG),trường hợp nếu lúc nhập tên hàng lở bị sai(do gỏ bị sai sót mà mình không hay) thì sẻ báo lổi không tìm thấy tên mặt hàng bị nhập sai đó .

Sau khi kiểm tra quan sát xem các số liệu đã nhập chính xác đúng số liệu và đúng vị trí hết thì ta bấm nút Xoa Mau
Yêu cầu ở nút Xoa Mau là thực hiện lệnh: chỉ xóa các màu vàng do nhập tự động tạo ra chứ không xóa các định dạng đang có sẳng như: màu chử và số,định dạng dấu " , " (ví dụ: 50000 sẻ là 50,000)...

Như vậy là yêu cầu của mình đã được viết lại rất kỷ rồi, rất mong các bạn xem đưa ra phương án tốt nhất và giúp mình nhé. mình rất cám ơn các bạn.

Trong sheet GOC CHUNG ở cột MAT HANG mình có gán vài tên người và tên địa danh làm ví dụ để đa dạng hóa tên hàng, kiểu chử có dấu và không dấu, đồng thời cho các bạn test thử cái hay của code phối hợp textbox-listbox của bạn QuangHai viết. Các bạn thử gỏ chử vào vùng ô màu xanh (sheet ThayGia cột MAT HANG) chử e xem --> xổ list có cả tên có gán e và cả tên có gán chử ê, gỏ a -->list có cả các tên có gán chử a, â, ạ,...
 

File đính kèm

Lần chỉnh sửa cuối:
Em chào Anh Quanghai1969! Anh ơi khi em nhập vào list box các danh sách hiện lên. Do cột hẹp mà chữ thì dịch sang lề bên phải khoảng 2 ký tự nên dễ ko nhìn thấy hết chữ. Em muốn chữ nó sát sang lề bên trái hết cỡ. Thì có cách nào ko Anh. Mong Anh chỉ giúp Em. Cảm ơn Anh nhiều ạ!
 

File đính kèm

  • GPE.jpg
    GPE.jpg
    18.4 KB · Đọc: 310
Em chào Anh Quanghai1969! Anh ơi khi em nhập vào list box các danh sách hiện lên. Do cột hẹp mà chữ thì dịch sang lề bên phải khoảng 2 ký tự nên dễ ko nhìn thấy hết chữ. Em muốn chữ nó sát sang lề bên trái hết cỡ. Thì có cách nào ko Anh. Mong Anh chỉ giúp Em. Cảm ơn Anh nhiều ạ!
Thì bạn kéo cái cột ra rộng thêm 2 ký tự nữa đi. Sao hà tiện thế. Cái listbox nó đã canh sát lề bên trái rồi đấy.
 
Vậy hả Anh. hihi... Em tưởng còn cho nó sát thêm được. Cảm ơn Anh nhé!
 
Chào anh quanghai1969 và các bạn
Em đang tìm hiểu về combo box và đã đọc qua topic "tạo combo box thông minh", em rất thích nhưng về VBA thì em không biết gì cả. Em có 1 file nhỏ rất cần ứng dụng của anh quanghai1969, em xin up lên đây mong anh và các bạn giúp. Em xin cám ơn.
 

File đính kèm

Chào anh quanghai1969 và các bạn
Em đang tìm hiểu về combo box và đã đọc qua topic "tạo combo box thông minh", em rất thích nhưng về VBA thì em không biết gì cả. Em có 1 file nhỏ rất cần ứng dụng của anh quanghai1969, em xin up lên đây mong anh và các bạn giúp. Em xin cám ơn.
Tên KH trùng như thế thì làm sao biết chọn cái nào là cái nào???
 
Mình có thêm điều kiện lọc mã trùng được không anh quanghai1969.Còn không thì em sẽ tạo thêm cột phụ lọc ra danh sách mã khách hàng và tên khách hàng (tên nhân viên có thể thay đổi theo thời điểm nên em xin bỏ qua). em post lại file. Mong anh giúp đỡ
 

File đính kèm

Mình có thêm điều kiện lọc mã trùng được không anh quanghai1969.Còn không thì em sẽ tạo thêm cột phụ lọc ra danh sách mã khách hàng và tên khách hàng (tên nhân viên có thể thay đổi theo thời điểm nên em xin bỏ qua). em post lại file. Mong anh giúp đỡ

Bạn làm thế không được. Bạn nhập tên KH rồi "bắt" suy ra mã KH là không được. Nếu có 2 KH cùng tên và khác mã (mã dĩ nhiên là duy nhất), vd "Nguyễn Anh" - M1234, "Nguyễn Anh" - M5678 thì khi gõ "Nguyễn Anh" thì chọn mã nào?
Bạn phải: Nhập mã KH rồi suy ra tên KH.
 
Dạ cám ơn góp ý của anh. nhưng đối với dữ liệu của em tên và mã khách hàng đều là duy nhất ạ. Nếu được anh giúp em tìm tên khách hàng thôi cũng được ạ. Em cám ơn anh nhiều
 
Dạ cám ơn góp ý của anh. nhưng đối với dữ liệu của em tên và mã khách hàng đều là duy nhất ạ. Nếu được anh giúp em tìm tên khách hàng thôi cũng được ạ. Em cám ơn anh nhiều

Bạn ơi, chưa bao giờ chắc chắn được rằng tên là duy nhất, tại thời điểm này lượng nhân sự sẽ không trùng, nhưng thời điểm khác thì sẽ trùng. Vì thế, chỉ có mã số là không trùng được thôi.

Chỉ là sự góp ý, chứ việc gõ tên rồi cho ra mã, tôi nghĩ hàm Match, Index hay Vlookup đều có thể đáp ứng điều kiện của bạn mà không cần dùng đến code.
 
Lần chỉnh sửa cuối:
Không trùng đâu anh Hoàng Trọng Nghĩa. Vì dữ liệu mã khách hàng và tên khách hàng bên em tạo là duy nhất (chỉ có tên nhân viên bán hàng là có thể thay đổi thôi). Mã kh được mã hóa bằng ký tự, nếu tìm theo mã thì lâu lắm và cũng không biết mã đó là khách hàng nào.
 
Không trùng đâu anh Hoàng Trọng Nghĩa. Vì dữ liệu mã khách hàng và tên khách hàng bên em tạo là duy nhất (chỉ có tên nhân viên bán hàng là có thể thay đổi thôi). Mã kh được mã hóa bằng ký tự, nếu tìm theo mã thì lâu lắm và cũng không biết mã đó là khách hàng nào.

Ngay cái sheet Phantich, tại ô B2 bạn copy công thức này vào:

Mã:
=IF(C2="","",INDEX('data goc'!$C$3:$C$21,MATCH(C2,'data goc'!$D$3:$D$21,0)))

Thế là xong!
 
Oh không phải vậy đâu anh Trọng Nghĩa ơi. Em đang làm 1 combo box tại ô C2, combo box này để tìm tên khách hàng theo cách mà anh quanghai1969 trình bày tại topic này (đánh 1 text box nó sẽ list ra tên khách hàng chứa text mình vừa nhập). sau khi đã chọn được khách hàng thì nó sẽ kết xuất ra mã kh tương ứng tại ô B2.
 
Oh không phải vậy đâu anh Trọng Nghĩa ơi. Em đang làm 1 combo box tại ô C2, combo box này để tìm tên khách hàng theo cách mà anh quanghai1969 trình bày tại topic này (đánh 1 text box nó sẽ list ra tên khách hàng chứa text mình vừa nhập). sau khi đã chọn được khách hàng thì nó sẽ kết xuất ra mã kh tương ứng tại ô B2.
Làm vui chơi thế này rồi tính tiếp. Chọn C2, xuất hiện cái Textbox, muốn nhập gì tùy ý. Nhập xong nhấp đúp chuột tại tên khách hàng muốn chọn >> hên xui nha
 

File đính kèm

Lần chỉnh sửa cuối:
Cám ơn anh Quanghai1969 đã giúp đỡ. nhưng anh có thể sửa lại giúp em giống như cách anh đã làm ở những bài hướng dẫn trên được không ạ (khi chọn và nhập dữ liệu vào ô C2 sẽ đổ ra danh sách nội dung chứa giá trị vừa gõ). Cách của anh đang làm sẽ làm mất hết dữ liệu phía dưới (B3:E3) của em. rất mong anh giúp thêm.
 
Các Bác giúp E chỉ cho nhập ở 2 ô theo 2 list khác nhau như mình ghi ở file đính kèm đc không ạ, loay hoay thử sửa mãi mà không được...
 

File đính kèm

File đính kèm

Lần chỉnh sửa cuối:
trong khi chờ đợi quanghai1969, dùng tạm file kèm này đi
tôi chỉ sửa chút code thui, xem sẽ hiểu
Chắc là đúng ý bạn rui

Tuyệt vời cám ơn bạn rất nhiều.. Mình vừa xem thử nhưng hình như có lúc nó lọc chưa chính xác thì phải.. lọc tương đối đúng thôi, như vậy nếu dữ liệu nhiều cái tên giống giống nhau chắc tìm toét mắt. Mình đang định sử dụng để lọc phụ tùng xe Ô tô: Trên 20 nghìn loại phụ tùng, kể ra Bác có cách nào lọc chính xác những từ mình gõ vào thì đúng là No1.

Dù sao cũng cảm ơn Bác rất nhiều...!
 
Tuyệt vời cám ơn bạn rất nhiều.. Mình vừa xem thử nhưng hình như có lúc nó lọc chưa chính xác thì phải.. lọc tương đối đúng thôi, như vậy nếu dữ liệu nhiều cái tên giống giống nhau chắc tìm toét mắt. Mình đang định sử dụng để lọc phụ tùng xe Ô tô: Trên 20 nghìn loại phụ tùng, kể ra Bác có cách nào lọc chính xác những từ mình gõ vào thì đúng là No1.

Dù sao cũng cảm ơn Bác rất nhiều...!

Vì đó là cách lập chính của quanghai là tìm và liệt kê các item gần đúng mà thôi,

Nếu bạn thích chính xác cũng được thôi, quá đơn giản, bạn bỏ các dấu * trong câu lệnh đi, (hoặc chỉ bỏ dấu * cuối là xong,

Dù sao dù sao cũng là dù sao là máy khôgn phải con người
 
Vì đó là cách lập chính của quanghai là tìm và liệt kê các item gần đúng mà thôi,

Nếu bạn thích chính xác cũng được thôi, quá đơn giản, bạn bỏ các dấu * trong câu lệnh đi, (hoặc chỉ bỏ dấu * cuối là xong,

Dù sao dù sao cũng là dù sao là máy khôgn phải con người

Vâng, có phải bỏ đi thế này không ạ?

Mã:
Sub Loc()    Dim kq(), i, j, sT As String
    sT = "*" & UCase(Sheet1.TextBox1.Value) & ""
    For i = 1 To UBound(dl)
       If dl(i, 1) <> "" Then
          If UCase(dl(i, 1)) Like sT Then
             j = j + 1
             ReDim Preserve kq(1 To j)
             kq(j) = dl(i, 1)
          End If
       End If
    Next
    If j Then Sheet1.ListBox1.List = kq
End Sub

Nhưng khi nhập nó vẫn chưa tìm chính xác tên được Bác ạ. VD E gõ chữ Thiên và dấu cách thì nó vẫn thể hiện cả loạt như hình dưới đây %#^#$. Có cách nào fix được không Bác? Với lại E xin hỏi thêm muốn kéo rộng cái ô combobox (vì tên dữ liệu dài, combobox ngắn không đọc được hết chữ) thì làm thế nào ạ..?

22.jpg
 
Lần chỉnh sửa cuối:
Vâng, có phải bỏ đi thế này không ạ?

Mã:
Sub Loc()    Dim kq(), i, j, sT As String
    sT = "*" & UCase(Sheet1.TextBox1.Value) & ""
    For i = 1 To UBound(dl)
       If dl(i, 1) <> "" Then
          If UCase(dl(i, 1)) Like sT Then
             j = j + 1
             ReDim Preserve kq(1 To j)
             kq(j) = dl(i, 1)
          End If
       End If
    Next
    If j Then Sheet1.ListBox1.List = kq
End Sub

Nhưng khi nhập nó vẫn chưa tìm chính xác tên được Bác ạ. VD E gõ chữ Thiên và dấu cách thì nó vẫn thể hiện cả loạt như hình dưới đây %#^#$. Có cách nào fix được không Bác?

sai một li đi 1 dặm, hihihi
tôi nhầm phải giữ lại dấu sao cuối và bỏ dấu * đầu,

sửa lệnh
PHP:
sT = "*" & UCase(Sheet1.TextBox1.Value) & "*"
thành
PHP:
sT = UCase(Sheet1.TextBox1.Value) & "*"
Khi này listbox sẽ liệt kê các item có phần text đầu giống bạn gõ

--------------
Với lại E xin hỏi thêm muốn kéo rộng cái ô combobox (vì tên dữ liệu dài, combobox ngắn không đọc được hết chữ) thì làm thế nào ạ..?

xem file kèm, độ rộng textbox cũng như listbox bằng với độ rộng cột nhập dữ liệu

trong file này đã sửa cả 2 vđề trên
 

File đính kèm

Lần chỉnh sửa cuối:
Rất rất cảm ơn Bác. Em đã lấy về và đã xem. Độ rộng của ComboBox Bác sửa như vậy quá tuyệt rồi miễn chê.. Nhưng cái vụ tìm chính xác tên E vừa thử và thấy vẫn chưa ổn Bác ạ..

Thông thường, theo cách hiểu chung, mỗi lần gõ phím Space bar cón nghĩa là câu vừa gõ trước đó đã được hoàn thành. Như vậy, vẫn trong file trên em thử gõ thiện và dấu cách thì nó mới chỉ hiện ra tên thanh phương dù trong list có 2 tên thỏa mãn chữ thiệnhoàng thiện nhật thiện. Như vậy có nghĩa vẫn chưa đáp ứng được yêu cầu đúng không Bác.

Em không biết là có thể cải tiến tìm chính xác được không, nếu được thì E rất mong và nhờ Bác sửa thêm giúp E vì như E nói, dữ liệu của E để cập nhật là rất lớn. Nếu tìm đúng tên gõ vào đã rất nhiều rồi. Nếu hiện cả tên gần đúng chắc lại oải...

E xin trân trọng cảm ơn.
 
Lần chỉnh sửa cuối:
. Nhưng cái vụ tìm chính xác tên E vừa thử và thấy vẫn chưa ổn Bác ạ..

Thông thường, theo cách hiểu chung, mỗi lần gõ phím Space bar cón nghĩa là câu vừa gõ trước đó đã được hoàn thành. Như vậy, vẫn trong file trên em thử gõ thiện và dấu cách thì nó mới chỉ hiện ra tên thanh phương dù trong list có 2 tên thỏa mãn chữ thiệnhoàng thiện nhật thiện. Như vậy có nghĩa vẫn chưa đáp ứng được yêu cầu đúng không Bác.

E xin trân trọng cảm ơn.

Không hiểu chính xác của bạn là sao, bạn cứ nói không vậy cần thì đưa file nên,

giờ tạm sửa câu lệnh sT=.... thành như sau
sT = "*" & Trim(UCase(Sheet1.TextBox1.Value)) & "*"

sửa chỗ câu lệnh If thành như sau

If UCase(Trim(dl(i, 1))) Like sT Then


xem sao

còn vẫn chưa được, thì bạn phải định nghĩa chính xác thế nào
 
Không hiểu chính xác của bạn là sao, bạn cứ nói không vậy cần thì đưa file nên,

giờ tạm sửa câu lệnh sT=.... thành như sau
sT = "*" & Trim(UCase(Sheet1.TextBox1.Value)) & "*"

sửa chỗ câu lệnh If thành như sau

If UCase(Trim(dl(i, 1))) Like sT Then


xem sao

còn vẫn chưa được, thì bạn phải định nghĩa chính xác thế nào

Vâng, sorry Bác E cũng hơi dài dòng. Ý em muốn là tìm chính xác những từ mình nhập vào, chứ không phải tìm gần đúng từ nhập vào. Ở file đính kèm dưới đây, Ô B9 khi E gõ chữ thiên, nó lại list ra 2 từ có chữ thiện (khác nhau dấu nặng) - như vậy là nó đang tìm gần đúng.

Bác xem hình và file:

111.jpg

File đính kèm của E đây ạ: (vẫn file cũ, em sửa lại 2 câu lệnh của Bác phía trên).

E nhờ Bác xem thêm hộ E chút xíu..!
 

File đính kèm

Lần chỉnh sửa cuối:
Vâng, sorry Bác E cũng hơi dài dòng. Ý em muốn là tìm chính xác những từ mình nhập vào, chứ không phải tìm gần đúng từ nhập vào. Ở file đính kèm dưới đây, Ô B9 khi E gõ chữ thiên, nó lại list ra 2 từ có chữ thiện (khác nhau dấu nặng) - như vậy là nó đang tìm gần đúng.

Bác xem hình và file:

View attachment 104777

File đính kèm của E đây ạ: (vẫn file cũ, em sửa lại 2 câu lệnh của Bác phía trên).

E nhờ Bác xem thêm hộ E chút xíu..!


Tìm gần đúng để thấy rằng

Khi bạn gõ chữ thiên nó sẽ liệt kê hết các cái gần sát vào chọn

Ví dụ có 5 chữ

Trầm lặng
Trầm my
Trầm Ngâm

-----------> khi ta gõ chữ "Trầm" thì nó phải liệt kê cho chúng ta sẽ chọn

dĩ nhiêm nếu chúng ta gõ chính xác chữ "Trầm my" ==> nó chỉ liệt kê chữ này mà thôi

VẬY mới gọi là thông minh chứ sao, gõ ký tự nào nó sẽ liệt kê các item chứa ký tự đó có để ta chọn lựa nhanh chóng, chứ nó lại hiện đúng thì cần thì phải chọn nữa

Vậy ý bạn muốn chính xác là sao

bạn gõ chữ "thiên" ==> chỉ cần gõ chữ thi ==> "thiện" đã hiện ra rùi - sau đó không tìm thấy chữ "thiện" nên 2 dòng có chữ thiện vẫn hiện ra ,
thế thôi


tôi vẫn chưa hiểu ý bạn muốn gì,

NÊU chính xác 100% thì sao không dùng VALIDATION cho xong?????????????
 
Vâng, cám ơn Bác để em thử thêm... thực ra cách nghĩ của E là muốn tìm kiếm theo kiểu danh bạ điện thoại thôi. Validation thì không đáp ứng được.

Ôi! lại phát sinh vấn đề khi thử rồi, Bác ngó hộ E cái file E gửi kèm. Càng gõ ở B9+B11 thì ô list box lại càng nhỏ lại là sao ấy Bác nhỉ..?

https://www.dropbox.com/s/ecyw5shxhek9ytp/Gia xe.xlsm
 
Vâng, cám ơn Bác để em thử thêm... thực ra cách nghĩ của E là muốn tìm kiếm theo kiểu danh bạ điện thoại thôi. Validation thì không đáp ứng được.

Ôi! lại phát sinh vấn đề khi thử rồi, Bác ngó hộ E cái file E gửi kèm. Càng gõ ở B9+B11 thì ô list box lại càng nhỏ lại là sao ấy Bác nhỉ..?

https://www.dropbox.com/s/ecyw5shxhek9ytp/Gia xe.xlsm


đổi lại SUB Sub Loc() như sau
PHP:
Sub Loc()
    Dim kq(), i, j, sT As String
    
    '''sT = "*" & Trim(UCase(Sheet1.TextBox1.Value)) & "*"
    sT = Trim(UCase(Sheet1.TextBox1.Value)) & "*"
    For i = 1 To UBound(dl)
       If dl(i, 1) <> "" Then
          If UCase(Trim(dl(i, 1))) Like sT Then
             j = j + 1
             ReDim Preserve kq(1 To j)
             kq(j) = dl(i, 1)
          End If
       End If
    Next
    If j Then
        With Sheet1.ListBox1
            .List = kq
            .Width = ActiveCell.Width
            .Height = 250
        End With
    End If
End Sub

tôi nghĩ là khi gõ nên gõ "từ đầu" nên đã đổi thành
sT = Trim(UCase(Sheet1.TextBox1.Value)) & "*"

như thế bạn chỉ cần gõ BMV sẽ liệt kê các tên bắt đầu BMV, tương tự gõ Daew là hiện các tên Daewoo... chẳng hạn..
 
đổi lại SUB Sub Loc() như sau
PHP:
Sub Loc()
    Dim kq(), i, j, sT As String
    
    '''sT = "*" & Trim(UCase(Sheet1.TextBox1.Value)) & "*"
    sT = Trim(UCase(Sheet1.TextBox1.Value)) & "*"
    For i = 1 To UBound(dl)
       If dl(i, 1) <> "" Then
          If UCase(Trim(dl(i, 1))) Like sT Then
             j = j + 1
             ReDim Preserve kq(1 To j)
             kq(j) = dl(i, 1)
          End If
       End If
    Next
    If j Then
        With Sheet1.ListBox1
            .List = kq
            .Width = ActiveCell.Width
            .Height = 250
        End With
    End If
End Sub

tôi nghĩ là khi gõ nên gõ "từ đầu" nên đã đổi thành
sT = Trim(UCase(Sheet1.TextBox1.Value)) & "*"

như thế bạn chỉ cần gõ BMV sẽ liệt kê các tên bắt đầu BMV, tương tự gõ Daew là hiện các tên Daewoo... chẳng hạn..

Vâng, tên xe thì thế nhưng tên phụ tùng thì quá nhiều, chẳng thể nhớ hết được. VD như khi tìm tên trong danh bạ điện thoại cũng vậy, có hàng nghìn tên nhưng khi cần tìm mình không nhớ chính xác 1 ai và chỉ nhớ mang máng là làm ở Khách sạn và khi đặt tên đã ghi tên tắt là KS rồi. Lúc đó chỉ cần gõ KS và tìm là ok.

Trường hợp như Bác E sợ lại quay về tìm như ban đầu ạ. Nghĩa là kiểu tìm kiếm giống như validation ấy ạ.. E xin giữ nguyên:

sT = "*" & Trim(UCase(Sheet1.TextBox1.Value)) & "*"

là rất ổn rồi ạ. Cảm ơn bác rất nhiều...!
 
Trường hợp như Bác E sợ lại quay về tìm như ban đầu ạ. Nghĩa là kiểu tìm kiếm giống như validation ấy ạ.. E xin giữ nguyên:
sT = "*" & Trim(UCase(Sheet1.TextBox1.Value)) & "*"
là rất ổn rồi ạ. Cảm ơn bác rất nhiều...!

Vậy thì bạn dùng cho phù hợp với yêu cầu của mình thui

Nhưng như thế thì là tìm gần đúng đó,
 
Vậy thì bạn dùng cho phù hợp với yêu cầu của mình thui

Nhưng như thế thì là tìm gần đúng đó,

OK, túm lại là rất ngon rồi.

Tiện đây Bác cho E hỏi thêm tý xíu nữa được không ạ..

Hiện cái file trên E nhờ bác là tại ô B9 gắn Combo tìm Loại xe, B12 gắn Combo tìm danh mục, giờ E muốn thêm Ô B2 cũng tìm loại xe và Ô B14 cũng tìm danh mục xe thì tại 2 Ô này ta làm thế nào để gán macro vào được ạ.. Bác chỉ giúp E cách làm luôn nhé để E có thể tùy biến sử dụng ở những trường hợp khác.

E cảm ơn Bác nhiều...!
 
OK, túm lại là rất ngon rồi.

Tiện đây Bác cho E hỏi thêm tý xíu nữa được không ạ..

Hiện cái file trên E nhờ bác là tại ô B9 gắn Combo tìm Loại xe, B12 gắn Combo tìm danh mục, giờ E muốn thêm Ô B2 cũng tìm loại xe và Ô B14 cũng tìm danh mục xe thì tại 2 Ô này ta làm thế nào để gán macro vào được ạ.. Bác chỉ giúp E cách làm luôn nhé để E có thể tùy biến sử dụng ở những trường hợp khác.

E cảm ơn Bác nhiều...!

Nháy phải lên tab sheet NHAP ==> chọn view code
thêm đoạn đỏ sau vào trong Sub Worksheet_SelectionChange (hoặc copy toàn bộ sub mới thay sub cũ), như sau:
(bạn có thể làm tương tự cho các ô nào mong muốn)
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim nCol As Long
    If Target.Address = "$B$9" [COLOR="#FF0000"]Or Target.Address = "$B$2"[/COLOR] Then
        nCol = 1
        With Sheet2
            dl = .Range(.[a1], .[a65536].End(3)).Resize(, nCol).Value
        End With
        Sheet1.ListBox1.ColumnCount = nCol
        Thaydoi
    ElseIf Target.Address = "$B$12" [COLOR="#FF0000"]Or Target.Address = "$B$14"[/COLOR] Then
        nCol = 2
        With Sheet3
            dl = .Range(.[a1], .[a65536].End(3)).Resize(, nCol).Value
        End With
        Sheet1.ListBox1.ColumnCount = nCol
        Thaydoi
    Else
        If Sheet1.TextBox1.Visible Or Sheet1.ListBox1.Visible Then
            Hide
            Erase dl
        End If
    End If
End Sub
 

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

Back
Top Bottom