Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
1

Поместить в Комбобокс отфильтрованную колонку умной таблицы

06.05.2019, 02:27. Показов 5725. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят, как в Комбобокс поместить отфильтрованную колонку умной таблицы. от а до я



Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub ComboBox1_Change()
Dim sh_x As Worksheet
Dim ListObj As ListObject
Set sh_x = ThisWorkbook.Worksheets("Лист1")
Set ListObj = sh_x.ListObjects("Таблица1")
ComboBox1.Clear
For i = 1 To ListObj.Range.Cells.Count
    Sheets("Лист1").ComboBox1.AddItem ListObj.Range.Cells(2, 1)(i)
Next
End Sub
Миниатюры
Поместить в Комбобокс отфильтрованную колонку умной таблицы  
Вложения
Тип файла: zip Книга1 (2).zip (18.4 Кб, 18 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2019, 02:27
Ответы с готовыми решениями:

Отчёт в 8-ке, поместить в колонку таблицы другую таблицу
Люди, нужна помощь- второй день бьюсь с задачей, :) но задача пока только в голове, и я даже и не...

Поместить в List<> отфильтрованную коллекцию
Здравствуйте. Задача следующая. Есть список List&lt;string&gt;. Есть коллекция IQureyable&lt;obj&gt;....

Получить данные из одной таблицы и поместить их в другую табличную колонку
Здравствуйте !!! Вопрос такой - есть данные в - &quot; документы -&gt; реализация товаров и услуг -&gt; товары...

Поместить колонку в отдельный див
день добрый. Есть такой контейнер для текста, в нем текст делится на 3 колонки, как сделать что бы...

21
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
06.05.2019, 13:22 2
Вы это имели в виду?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub ComboBox1_Change()
    Dim sh_x As Worksheet
    Dim ListObj As ListObject
    Dim Mass() As String
    Set sh_x = ThisWorkbook.Worksheets("Лист1")
    Set ListObj = sh_x.ListObjects("Таблица1")
    ComboBox1.Clear
    ReDim Mass(1 To ListObj.Range.Cells.Count - 1) ' тут убирается значение "Фамилия" из комбобокса
    For i = 1 To ListObj.Range.Cells.Count - 1
        Mass(i) = ListObj.Range.Cells(2, 1)(i)
    Next i
    For i = 1 To UBound(Mass) - 1
        For j = i + 1 To UBound(Mass)
            If Mass(i) > Mass(j) Then
                Temp = Mass(j)
                Mass(j) = Mass(i)
                Mass(i) = Temp
            End If
        Next j
    Next i
    For i = 1 To UBound(Mass)
        Sheets("Лист1").ComboBox1.AddItem Mass(i)
    Next i
End Sub
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
06.05.2019, 13:37  [ТС] 3
Kate_27, да, но сортировка неточная. Посмотрите пожалуйста. Иванов должен быть первым
Вложения
Тип файла: zip Книга1 (2).zip (20.2 Кб, 13 просмотров)
0
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
06.05.2019, 13:45 4
mor_sergey,
А так строк меньше и в таблице тоже будет сортировка по алфавиту:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub ComboBox1_Change()
    Dim TheRange As Range
    Dim i As Long
    Dim sh_x As Worksheet
    Dim ListObj As ListObject
    Set sh_x = ThisWorkbook.Worksheets("Лист1")
    Set ListObj = sh_x.ListObjects("Таблица1")
    ComboBox1.Clear
    ListObj.Sort.Apply
    On Error Resume Next
    For i = 1 To ListObj.Range.Cells.Count - 1
        Sheets("Лист1").ComboBox1.AddItem ListObj.Range.Cells(2, 1)(i)
    Next i
End Sub
Добавлено через 1 минуту
mor_sergey,
А почему Иванов первый? Вроде З перед И идет?
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
06.05.2019, 13:53  [ТС] 5
Kate_27, а так сортировки нету совсем
0
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
06.05.2019, 14:11 6
mor_sergey, У меня все сортирует как надо, посмотрите в моем файле
Вложения
Тип файла: zip комбобокс на листе.zip (19.2 Кб, 34 просмотров)
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
06.05.2019, 14:33  [ТС] 7
Kate_27, так работает....мне всю жизнь твердили, что первая буква А. Врали. Открыли глаза мне. Спасибо. Зайцев в примере первый

Добавлено через 3 минуты
Kate_27, так на листе сортировки быть не должно...не заметил. вариант с массивом больше подходит...только зайцева бы убрать

Добавлено через 1 минуту
Kate_27, а в таблице меняться не должно. Вариант с массивом больше подходит...Зайцева бы убрать
0
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
06.05.2019, 14:42 8
mor_sergey,
Хорошо, в таблице меняться не будет тогда. А что не так с Зайцевым?
По алфавиту из Вашего примера должно быть так: Зайцев, Иванов, Петров, Сидоров. А Вам Зайцев первым номером не по душе. Как же должо быть?
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
06.05.2019, 15:01  [ТС] 9
Kate_27, ой и правда.зайцев в начале. Прошу прощения. Ну, если без массива никак, то все
0
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
06.05.2019, 15:30 10
mor_sergey, ну хорошо, что получилось)
Наверное можно без массива, но я не знаю как (
Так что чем смогла)
0
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
06.05.2019, 15:39  [ТС] 11
Kate_27, у меня ерунда какая-то....вставил код с массивом в Ваш пример и загнал всех сотрудников. считает и показвапет, как надо....переношу код в свой файл, меняю названия листов , запускаю....все так же хорошо работает, но куча пустых строк вначале...в ошибке пока не разобрался
0
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
06.05.2019, 15:50 12
mor_sergey, если можете файл приложить, давайте. Будем разбираться.

Добавлено через 6 минут
mor_sergey,
Попробуйте вот так. Тут массив нужен только чтобы сохранить изначальную последовательность в таблице. И код короче, и работать должен, и производительность намного выше, чем при сортировке массива.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub ComboBox1_DropButtonClick()
    Dim Mass() As String
    Dim i As Long
    Dim sh_x As Worksheet
    Dim ListObj As ListObject
    Set sh_x = ThisWorkbook.Worksheets("Лист1")
    Set ListObj = sh_x.ListObjects("Таблица1")
    ComboBox1.Clear
    ReDim Mass(1 To ListObj.Range.Cells.Count)
    For i = 1 To ListObj.Range.Cells.Count
        Mass(i) = ListObj.Range.Cells(2, 1)(i - 1)
    Next i
    ListObj.Sort.Apply
    On Error Resume Next
    For i = 1 To ListObj.Range.Cells.Count - 1
        Sheets("Лист1").ComboBox1.AddItem ListObj.Range.Cells(2, 1)(i)
    Next i
    For i = 1 To ListObj.Range.Cells.Count
        ListObj.Range.Cells(2, 1)(i - 1) = Mass(i)
    Next i
End Sub
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
06.05.2019, 16:18  [ТС] 13
Kate_27, причина в столбцах.....у меня их 3. а он считает все ячейки похоже...а как столбец указать?


последний Ваш код у меня жутко тормозил и не делал как надо.оставим этот
Вложения
Тип файла: zip комбобокс на листе.zip (20.1 Кб, 19 просмотров)
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
06.05.2019, 18:18 14
mor_sergey, Количество извращений в предыдущем варианте можно уменьшить :

Visual Basic
1
2
3
4
5
6
7
Private Sub Test()
    Dim r As Range, a
    Set r = Range("Таблица1[Фамилия]")
    a = r.Value
    r.Sort r(0), xlAscending, Header:=xlYes
    ComboBox1.List = r.Value: r.Value = a
End Sub
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
06.05.2019, 21:55  [ТС] 15
pashulka, гениально. Приду домой, поменяю код. Спасибо

Добавлено через 3 часа 29 минут
pashulka, все как всегда здорово, только 2 и 3 столбцы при сортировке слетают. нужно восстанавливать кк для первого столбца
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
06.05.2019, 22:05 16
Тогда так (ФИО - первый столбец)

Visual Basic
1
2
3
4
5
6
7
8
Private Sub Test2()
    Dim r As Range, a
    Set r = Range("Таблица1")
    a = r.Value
    r.Sort r(0, 1), xlAscending, Header:=xlYes
    ComboBox1.List = r.Value: r.Value = a
    'ComboBox1.List = r.Columns(1).Value: r.Value = a
End Sub
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
06.05.2019, 22:24  [ТС] 17
pashulka, теперь хорошо....в примере все работает замечательно...в файле моем комбобоксу не присваивается выбранное имя...из списка выбираем, тыкаем, а комбобоуус обнуляется
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
06.05.2019, 22:32 18
Какое событие используется ?
1
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
06.05.2019, 22:35  [ТС] 19
pashulka, разобрался. Мой косяк. Прошу прощенья

Добавлено через 58 секунд
pashulka, Private Sub ComboBox1_DropButtonClick()
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
06.05.2019, 22:39 20
Лучший ответ Сообщение было отмечено mor_sergey как решение

Решение

Чтобы не выполнять сортировку лишний раз (при скрытии списка)

Visual Basic
1
2
3
4
5
Private b As Boolean
 
Private Sub ComboBox1_DropButtonClick()
    b = Not b: If Not b Then Exit Sub
    ...
1
06.05.2019, 22:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2019, 22:39
Помогаю со студенческими работами здесь

Из умной таблицы в текстбокс
Что я делаю не так Me.CBHumans.List = Array(EmployeesListObj.Range(2))

Поместить изображение в первую колонку StringGrid1
У меня программа контроля и учета доступа соответственно при входе должна выводится фио, время и...

(excel_2010_VBA) Сортировка умной таблицы
Здравствуйте. Проблема заключается в том, что если указать конкретное имя таблицы, то сортировка...

Поиск умной таблицы по имени
Существует главнаяТаблица, в которую данные заносятся из формы, в т.ч. данные: -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru