Страницы: 1
RSS
поиск в форме
 
Проблема с формой поиска в форме. Прошу помочь в решении (Эксель2007 + ВБА).    
Есть таблица с организациями (название и город). Естественно, в одном городе много организаций. Причем названия у организаций не уникальные (много повторяющихся).  
На форме (среди прочих элементов) есть комбобокс, текстовое поле и листбокс. Комбобокс заполняется данными из специально сделанного справочника "Города". В текстовое поле вводится часть названия организации и в листбоксе появляются названия, соответствующие поисковой маске. Мне нужно, чтобы можно было "отфильтровать" в листбоксе только те организации, которые И находятся в выбранном городе (фильтр по комбобоксу) И соответствуют заданной маске (фильтр по текстовому полю). По отдельности ответ нашел, а вот вместе...  
Я новичок в VBA, то, что я прочитал, приводит к мысли о том, что тут не обойтись без массивов, но с ними я еще ни разу не сталкивался. Впрочем, может будут другие варианты...
 
В файле есть редактор, в редакторе - форма, в форме - комбобокс, в комбобоксе - город...  
вспомнилось: раскрывает сумку, достает сумочку, закрывает сумку, раскрывает сумочку, достает кошелек, закрывает сумочку, раскрывает кошелек... Убил бы! :)  
 
Алекс_, пример с Вашим набором "одно в другом" показать не хотите?
 
Алекс_, Вы полагаете, что кто-то сейчас возьмётся создавать вместо Вас форму, рисовать таблицы с данными?
 
Файл прилагаю.  
Задача: в комбобоксе выбираю город (заполняется из справочника). В текстовом поле набираю часть названия организации. Нажимаю кнопку "Найти" - листбокс заполняется перечнем организаций, в название которых входит текст из текстового поля и которые находятся в городе, соответствующем выбранному из списка. Клик по листбоксу выводит в текстовых полях "Результаты поиска" название отмеченной организации и примечание.  
Кода нет - именно его я и прошу от уважаемых форумчан.  
 
2 vikttur Анекдот хороший, но "не стреляйте в тапера"
 
Проверяйте.
 
Вот ещё вариант: (без кнопки поиска и лишних полей - они нафиг не нужны, как мне кажется...)  
 
Private Sub ComboBox_city_Change()  
   SearchRows  
End Sub  
 
Private Sub TextBox_org_Change()  
   If Me.ComboBox_city = "" Then Exit Sub  ' если не выбран город  
   SearchRows  
End Sub  
 
Private Sub UserForm_Initialize()  
   On Error Resume Next  
   Me.ComboBox_city.List = [cities].Value
End Sub  
 
Sub SearchRows()  
   txt = Trim(Me.TextBox_org): If txt = "" Then Exit Sub    ' нет строки поиска  
   Me.ListBox_orgs.Clear    ' очистка листбокса  
   Dim ra As Range: Set ra = Range([A2], Range("A" & Rows.Count).End(xlUp)).Resize(, 3) ' диапазон поиска
 
   On Error Resume Next  
   res = ArrAutofilterEx(ra.Value, "1=" & Me.ComboBox_city, "2=*" & txt & "*")    ' ищем подходящие строки  
   If Err Then Exit Sub    ' если строки не найдены - выход  
   Me.ListBox_orgs.List = res    ' выводим их в листбокс  
End Sub  
 
 
Сделано с использованием этой функции: http://excelvba.ru/code/ArrAutofilter  
 
См. пример в файле: http://excelvba.ru/XL_Files/Sample__05-10-2010__19-00-31.zip
 
Спасибо! Вариант Юрия_М для моей задачи удачнее. Тема закрыта
 
Подскажите, плиз, какой код позволит  искать в файле, который приложен к посту ЮрияМ, без учета регистра?
 
Можно так.
Страницы: 1
Читают тему
Наверх