Hỏi cách tạo combo box thông minh

Liên hệ QC
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

  • List box thong minh.rar
    28.7 KB · Đọc: 526
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

  • Listbox thong minh - Test1.rar
    19 KB · Đọc: 81
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

  • bang gia.rar
    34.6 KB · Đọc: 95
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

  • bang gia.rar
    40.2 KB · Đọc: 66
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

  • bang gia.rar
    37.8 KB · Đọc: 51
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

  • Textbox&listbox.rar
    32.5 KB · Đọc: 151
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:
Web KT
Back
Top Bottom