Thách đố đây! Dùng ComboBox ko cần đến VBA!

Liên hệ QC
Cảm ơn bác. Quả thực là nhờ có bác thì tôi mới biết có lỗi này. Chưa biết khắc phục bằng cách nào nữa.
 
Theo tôi thì cái vụ này chắc hẳn phải đặt name mới xong. Sau đó vào properties trong VBA và đặt Listfillrange bằng name, còn Linkedcell bằng cell "A1" chẳng hạn thì Ok. Chịu không bác Tuấn! Cafe nhé!
 
Đúng là chọn 1 item 2 lần liên tiếp thì không có tác dụng. Chắc khả năng CB không dùng VBA tới đây là hết quá!

File em gửi làm theo ý 1 câu hỏi của anh.

LM
 

File đính kèm

  • VD_LM.rar
    13.1 KB · Đọc: 58
Lần chỉnh sửa cuối:
Cái này khó nhỉ, hình như phải dùng đến Cell("address") và indirect nhưng chưa nghĩ ra.
Mà có phải nhấn f9 không vậy anhtuan1066.
 
Lần chỉnh sửa cuối:
Hoan hô minhlev... đó là cái chính xác nhất... tuy nhiên có thể sữa ngay chổ COUNTA thành 1 cái khác.. với mục đích là khi ta chọn vào 1 danh sách có sẳn và ko liên tục thì nó lại.. đi tiếp chứ ko nối tiếp vào danh sách phía trên...
=COUNTA(INDIRECT("Sheet1!$H$"&CELL("row")&":$H65500"))
Nói thì khó hiểu như hình dung như thế này đây: Giả sử tôi nhập dc đến H10... giờ tôi lại chọn ActiveCell ngay H19, vậy thì khi này nếu bấm ComboBox thì nó phải chèn vào H19 và đi tiếp chứ ko chèn vào H11...
Nhìn chung cách làm của minhlev về cơ bản là đúng nhất: Tạo 1 name động và gán LINKED CELL với Name này...
Cám ơn các bạn ủng hộ... Giờ các bạn có thể cải tiến thêm nhé!
Về vấn đề chọn cùng 1 Item vào 2 lần liên tiếp thì e rằng khó... tôi cũng ko nghĩ ra...
Với bạn minhlev: Xin bạn cho tôi số dt với! hi.. hi...
Với LearnMore: Bạn cũng đạt dc yêu cầu ở câu 1, cám ơn bạn
ANH TUẤN
 
Lần chỉnh sửa cuối:
Vậy là Bác yêu cầu bài chưa đúng, tôi cứ nghĩ rằng, cell nào active sẽ nhận KQ của combobox.
Bác phải nói là lấy tại dòng cuối của 1 cột nào đó +1 và nhận kq.
Cái này áp dụng thêm công thức của SoiBien rất hay
EndRow=MAX((INDIRECT("$A$1:$A65535")<>"")*(ROW(INDIRECT("$A$1:$A$65535"))))
A, B,...tùy.
 
Thì đúng rồi... cell nào Active sẽ nhận dc kết quả... về cơ bản thì minhlev đã làm đúng, tuy nhiên chưa chính xác lắm (vì bạn ấy cho KQ vào cuối bảng tính)... Và muốn biết ActiveCell thì dựa vào hàm CELL... dịch chuyển thì nhờ vào OFFSET... hi.. hi...
 
To bác anhtuan1066: Bác ơi, em ở tận Hà Nội cơ ạ. Tiếc rằng anh em mình khó có cơ hội gặp nhau, đi uống cà phê và nói chuyện. Giải được thách đố của bác là em vui lắm rồi. Tuy nhiên em nhận thấy sẽ còn nhiều cách đặt name khác mà bây giờ em chưa nghĩ ra (cách của bác ThuNghi là 1 ví dụ rất hay). Hộp tin nhắn của bác đầy quá, em không gửi được.
Số ĐT của em là 0903236865
 
Lần chỉnh sửa cuối:
Với minhlev: Thì bạn cứ đễ lại số dt đi, tôi gọi cho bạn... hi.. hi...
Về việc ko nhập dc 1 Item trong 2 lần liên tiếp tôi đã nghĩ ra 1 cách, đễ tối nay về test lại cái đã...
ANH TUẤN
 
- Em thì chỉ dùng VBA thôi, nên từ đầu đã biết là không hy vọng giải đáp được, nhưng cũng học hỏi các bác được chút ít !!!
 
Ai dà... cái vụ nhập 1 Item vào 2 lần liên tiếp tưởng là bở, ai dè làm hoài ko ra!
Lúc đầu tôi có ý định như thế này: Danh sách của ta từ A1 đến A10, vậy tôi sẽ đặt vào A11 công thức sao cho nó lấy dc nội dung của ActiveCell, tiếp theo thì sửa lại Name DS từ A1:A10 thành A1:A11... Mục đích việc làm này là muốn cho trong danh sách sẽ xuất hiện thêm 1 Item nữa, chính là cái Item mà ta vừa chọn trong ComboBox.. thế là ta có 2 Item trùng, ko chọn dc cái này thì sẽ chọn cái khác.. quá ngon rồi...
Hic... Cell A11 thì OK, ko có vấn đề, thế nhưng trong Name DS lại ko xuất hiện Item thứ 11... chẳng hiểu là lý do gì ???
Bạn minh thử theo hướng này xem có phát hiện gì khả quan ko?
Mến
ANH TUẤN
 
Em nhận thấy combo trong form thì có thể gọi trùng dữ liệu nhưng nó chỉ cho ra index thôi. Quả thật là không biết làm như thế nào nữa.
 
Chà, anh Tuấn chắn kỳ này đại thắng đưa ra 1 câu đố không ai tìm ra đáp án thỏa mản 100%. Tôi cũng nghỉ không ra cái này. Minhlev cho ra cái đáp án khá hay nhưng lại không gọi cùng cái nào trong combobox 2 lần liên tiếp.

Giờ thì có cách này hơi méo mó nghề nghiệp 1 chút nhưng trông cũng giống combobox lắm đấy. Để làm file nhẹ tôi có viết 1 code nhỏ. Các bạn cần quit-save nó sau khi down xuống rồi mở lên lại.

Các bạn cố gắng lên nha.
 

File đính kèm

  • VD.xls
    24 KB · Đọc: 40
Cám ơn bạn Digita... file của bạn có thể áp dụng dc nhiều lắm đấy, dù nó ko đáp ứng dc chủ đề bài tập nhưng cũng rất có ích...
Với minhlev: phát hiện của bạn cũng khá quan trọng đấy.. Đễ xem... hi.. hi.. Tính ra chúng ta đã tiến 1 bước khá dài rồi nhỉ! Từ đó rút ra dc rằng: "CÁI TA NGHĨ KO THỄ CHỈ CÓ Ý NGHĨA LÀ TA CHƯA BIẾT THÔI.. CHƯA CHẮC LÀ KO THỂ"
 
Ah... tôi vừa phát hiện ra 1 chuyện mà sao từ trước giờ ko thấy ai nói tới nhỉ? Đó là ngay cả khi ta dùng code thì cũng đâu có chọn dc 1 Item trong 2 lần liên tiếp chứ.. Bạn minhlev kiểm tra lại xem có đúng ko? Tôi dùng đoạn code này đây:
Private Sub ComboBox1_Change()
ActiveCell.Value = ComboBox1
ActiveCell.Offset(1, 0).Select
End Sub
Có gì ko ổn ko?
ANH TUẤN
 
Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
ActiveCell.Value = ComboBox1
ActiveCell.Offset(1, 0).Select
End Sub
Tôi dùng cái này, khi chọn CB xong bấm phím bất kỳ khi đó ô sẽ nhận 1 item liên tiếp.
 
Lần chỉnh sửa cuối:
Sao tôi thử cái ByVal KeyAscii As MSForms.ReturnInteger này nó lại báo lỗi nhỉ?
 
Không biết máy của các bác ntn, ở trên máy tôi, tôi dùng đoạn code sự kiện:
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean).
Ta chọn giá trị cần điền sau đó kích 2 lần vào giá trị đó thì OK.
 
Đoạn code của bạn minhlev tôi thử trên Listbox thì OK, còn ComboBox thì tôi ko tài nào Double click dc... vừa bấm cái nó lặn ngay, lấy đâu mà Double click chứ... Hic..
----------------------------
Nếu vậy các bạn cho hỏi trong Properties các Object này có phần nào chỉnh Click đơn thành Click đôi ko?
ANH TUẤN
 
Lần chỉnh sửa cuối:
Bác chỉ cần Double Click thẳng vào ô ComboBox thôi. Khi nào muốn đổi giá trị khác thì thì mới Click vào nút sổ xuống (Dropdown Button), chọn giá trị cần sau đó lại Double Click vào giá trị đó trong ô ComboBox.
 
Web KT
Back
Top Bottom