Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Фильтр в поиске userform

Автор belka, 08.02.2017, 18:35

« назад - далее »

belka

Здравствуйте, подскажите, пожалуйста, можно ли сделать фильтр услуг в поиске userform. Если по-русски, то есть форма, в ней в listbox1 идет поиск по фамилии, а в listbox2 хотелось сделать фильтр для listbox1 по услугам, так если нашлась Осова с разными услугами, то выбрав в listbox2 какую-либо услугу, то останутся записи Осовой только с выбранной услугой.

boa

#1
Исправьте строки
If UCase(Mid(Cells(i, 4), 1, L)) = UCase(TextBox2.Value) And Cells(i, 5) = ListBox2.Value Then
и добавьте
Private Sub ListBox2_Change()
    TextBox2_Change
End Sub


Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

belka

boa, спасибо, но так он находит результаты, если выбирать услуги, получается угадайка, набираю фамилию а результатов никаких нет и приходится нажимать на услугу, чтобы были результаты, в услуг у меня около 30, не очень удобно тыркать каждую. Можно ли, чтобы при общем поиске, то есть сразу как набираю фамилию находились все результаты (все оказанные услуги), а после, я уже сужаю поиск выбрав нужные услуги, когда они высветятся в общем поиске?

cheshiki1

видел на другом форуме второй вариант файла, Это ваш? если да то который из них актуальный?

boa

Dlya nachala nado ustanovit' dlya lisbox'a svoistvo MultiSelect = fmMultiSelectMulti
A dalee smotrite kod v prikreplennom file
dobavil kod Private Sub UserForm_Initialize()
    Dim i&
    With ListBox2
        For i = 0 To .ListCount - 1
            .Selected(i) = True
        Next
    End With
End Sub


i podredaktiroval kod TextBox2_Change
    If UCase(Mid(Cells(i, 4), 1, L)) = UCase(TextBox2.Value) Then
        For li = 0 To ListBox2.ListCount - 1
            If ListBox2.Selected(li) = True And Cells(i, 5) = ListBox2.List(li) Then
                ...
                ...
            End If
        Next li
    End If
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра