Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Зависимый выпадающий список с возможностью поиска совпадения - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Зависимый выпадающий список с возможностью поиска совпадения
scryde2015 Дата: Четверг, 03.02.2022, 12:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 40% ±

Excel 2016
Здравствуйте. Только - только начинаю осваивать VBA, поэтому не судите строго.
Не могу организовать в юзерформе зависимый выпадающий список с возможность поиска совпадений в любом месте из слов в диапазоне сводной таблицы.

Задача:
При выборе в комбобоксе "Статьи расходов" категории, в комбобоксе "Подкатегория" должен подставляться список, подкатегорий соответствующий статье расходов (на листе "Технический" есть сводная "Категории_Подкатегории_ST")

независимые выпадающие списки у меня получилось реализовать через этот код:
[vba]
Код
Private Sub cbx_article_DropButtonClick()
    main.cbx_article.List = ThisWorkbook.Sheets("Технический").PivotTables("Категории_ST").PivotFields("Категория").DataRange.Value 'Выпадающий список статьи расходов
End Sub
Private Sub cbx_article_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 'Заполнение списка статьи расходов с поиском
    If KeyCode = 38 Or KeyCode = 40 Then
    Exit Sub
    Else
        Dim a
        main.cbx_article.List = ThisWorkbook.Sheets("Технический").PivotTables("Категории_ST").PivotFields("Категория").DataRange.Value
        a = Application.Transpose(main.cbx_article.List)
        If main.cbx_article.Value = "" Then
            main.cbx_article.List = ThisWorkbook.Sheets("Технический").PivotTables("Категории_ST").PivotFields("Категория").DataRange.Value
        Else
            a = Filter(a, main.cbx_article.Value, True, vbTextCompare)
            main.cbx_article.List = a
        End If
        main.cbx_article.DropDown
    End If
End Sub
[/vba]

А вот зависимый не могу сообразить как прикрутить. Пока код зависимого выглядить так (без возможности поиска):
[vba]
Код
Sub FillSubcategory() 'Заполнение списка подкатегории

    Set ShData = ThisWorkbook.Worksheets("Данные")
    Set ArticleListObj = ShData.ListObjects("Данные_tb")
    
    main.cbx_subcategory.Clear
    For Each ArticleListRow In ArticleListObj.ListRows
        If ArticleListRow.Range(1) = main.cbx_article.Value Then
            main.cbx_subcategory.AddItem ArticleListRow.Range(2)
        End If
    Next ArticleListRow
End Sub
[/vba]

Подскажите, пожалуйста, что да куда подставить
К сообщению приложен файл: 2777538.xlsm (146.6 Kb)


Сообщение отредактировал scryde2015 - Четверг, 03.02.2022, 12:57
 
Ответить
СообщениеЗдравствуйте. Только - только начинаю осваивать VBA, поэтому не судите строго.
Не могу организовать в юзерформе зависимый выпадающий список с возможность поиска совпадений в любом месте из слов в диапазоне сводной таблицы.

Задача:
При выборе в комбобоксе "Статьи расходов" категории, в комбобоксе "Подкатегория" должен подставляться список, подкатегорий соответствующий статье расходов (на листе "Технический" есть сводная "Категории_Подкатегории_ST")

независимые выпадающие списки у меня получилось реализовать через этот код:
[vba]
Код
Private Sub cbx_article_DropButtonClick()
    main.cbx_article.List = ThisWorkbook.Sheets("Технический").PivotTables("Категории_ST").PivotFields("Категория").DataRange.Value 'Выпадающий список статьи расходов
End Sub
Private Sub cbx_article_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 'Заполнение списка статьи расходов с поиском
    If KeyCode = 38 Or KeyCode = 40 Then
    Exit Sub
    Else
        Dim a
        main.cbx_article.List = ThisWorkbook.Sheets("Технический").PivotTables("Категории_ST").PivotFields("Категория").DataRange.Value
        a = Application.Transpose(main.cbx_article.List)
        If main.cbx_article.Value = "" Then
            main.cbx_article.List = ThisWorkbook.Sheets("Технический").PivotTables("Категории_ST").PivotFields("Категория").DataRange.Value
        Else
            a = Filter(a, main.cbx_article.Value, True, vbTextCompare)
            main.cbx_article.List = a
        End If
        main.cbx_article.DropDown
    End If
End Sub
[/vba]

А вот зависимый не могу сообразить как прикрутить. Пока код зависимого выглядить так (без возможности поиска):
[vba]
Код
Sub FillSubcategory() 'Заполнение списка подкатегории

    Set ShData = ThisWorkbook.Worksheets("Данные")
    Set ArticleListObj = ShData.ListObjects("Данные_tb")
    
    main.cbx_subcategory.Clear
    For Each ArticleListRow In ArticleListObj.ListRows
        If ArticleListRow.Range(1) = main.cbx_article.Value Then
            main.cbx_subcategory.AddItem ArticleListRow.Range(2)
        End If
    Next ArticleListRow
End Sub
[/vba]

Подскажите, пожалуйста, что да куда подставить

Автор - scryde2015
Дата добавления - 03.02.2022 в 12:55
_Igor_61 Дата: Четверг, 03.02.2022, 17:02 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Понравились связки "Без договора" = "За счет местного бюджета" и подобное... :)
scryde2015, если хотите, чтобы в Вашем коде кто-то разобрался, пишите в нем комментарии. Вам самому охота будет разбираться, какая публичная переменная в каком модуль прыгает и что она должна делать?
 
Ответить
СообщениеПонравились связки "Без договора" = "За счет местного бюджета" и подобное... :)
scryde2015, если хотите, чтобы в Вашем коде кто-то разобрался, пишите в нем комментарии. Вам самому охота будет разбираться, какая публичная переменная в каком модуль прыгает и что она должна делать?

Автор - _Igor_61
Дата добавления - 03.02.2022 в 17:02
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!