|
- 엑셀 버전(95,97,2000,xp,2003,2007): 2013
* 아래줄에 질문을 작성하세요 >>
Sheet2에 있는 동물의 목록을 가지고 Sheet에 콤보박으로 나타내었습니다.
엑셀에서 자동기능으로 앞글자부터 시작했을때는 해당문자와 관련된 단어를 찾아줍니다
하지만 중간 단어부터 검색을하면 검색이 되지않습니다..
그래서 http://egloos.zum.com/longkee/v/1465037 여기를 참고하여 작업을 하려고하는데 한계가 있는것 같아 VBA고수분께 도움을 받고싶습니다..
==============[김원호님 글에 대한 답변입니다]==============
문자열 자동완성의 기본 원칙은 왼쪽부터 일치하는 문자열을 찾는 것이 당연합니다. 이 원칙이 무너지게 되면 오히려 곤란한 상황일 발생할 수 있지요.
말씀하신 기능을 구현하려면 목록 선택용 콤보상자나 리스트상자와 별개로, 키워드 검색창(텍스트상자 또는 직접 셀을 사용해도 무방)에 입력한 키워드에 따라 목록을 필터링해 주어야 할 것입니다.
붙임 파일을 참고하시기 바랍니다.
두 가지 방법을 모두 구현하였습니다.
B2 셀이나 또는 C2에 있는 텍스트상자에 검색 문자열을 입력하고
콤보박스를 열면 그 때 그 때 필터링된 목록이 보입니다.
검색창을 비워두면(널문자열), 전체 리스트가 목록 구성되고
검색창에 입력한 문자열을 포함하는 목록만 구성됩니다.
셀 자체를 검색창으로 활용할 경우에는 Worksheet_Change 이벤트를
텍스트박스 콘트롤을 활용할 경우에는 TextBox1_LostFocus 이벤트를 이용하면 됩니다.
TextBox1_Change 이벤트의 경우에는 상자 안에 키보드를 한 글자씩 타이핑할 때마다 자꾸 이벤트가 발생해서 비효율적입니다.
LostFocus는 영어 단어의 의미대로, 입력을 완성하고 다른 셀이나 다른 개체를 선택하는 순간 이벤트가 발생합니다. |
|