Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
96 / 92 / 16
Регистрация: 13.04.2015
Сообщений: 545
1

Вытащить значения столбцов выбранной записи в Combobox

05.12.2015, 17:07. Показов 6822. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Подскажите кто может сталкивался..можно ли как-то из Combobox'а с несколькими столбцами вытащить значения столбцов выбранной записи?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2015, 17:07
Ответы с готовыми решениями:

Как сохранить деление на колонки в выбранной строке ComboBox?
Об задачку зубы уже поломал. Как управлять колонками в List - мы уже разобрались. В принципе...

Удаление выбранной записи в Combobox из бд
пытаюсь удалить выбранную запись в Combobox из БД. название таблицы - num, содержит один столбец...

DBLookUpComboBox. Показать информацию о записи, выбранной в ComboBox
есть база на интербейсе,и 2 таблицы:одна с договорами,вторая с клиентами.надо сделать так,чтобы при...

При открытии выбранной записи отображается не то значение из ComboBox
При выборе записи из таблицы экзаменационный лист отображаются все выбранные поля для...

14
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
05.12.2015, 17:31 2
Можно использовать свойство .List([pvargIndex], [pvargColumn]) (небольшой пример прилагается)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub CommandButton1_Click()
    With ComboBox1
         If .ListIndex = -1 Then Exit Sub
         For iColumn = 0 To UBound(.List, 2)
             MsgBox .List(.ListIndex, iColumn), , "Столбец #" & iColumn + 1
         Next
    End With
End Sub
 
Private Sub UserForm_Initialize() 'Исключительно для примера
    With Range("A1").CurrentRegion
         If .Count > 1 Then ComboBox1.List = .Value
    End With
End Sub
1
Заблокирован
05.12.2015, 17:31 3
Visual Basic
1
2
3
4
5
6
Private Sub ComboBox1_Change()
With ComboBox1
Dim i As Long: i = .ListIndex
Caption = .List(i, 0) & " " & .List(i, 1) & " " &  .List(i, 2) & " " &  .List(i, 3)
End With
End Sub
1
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
05.12.2015, 17:48 4
P.S. Если при заполнении Combobox/Listbox использовался метод .AddItem, то вместо UBound(.List, 2) нужно указать реальное количество столбцов. Ибо этот метод изначально создаёт строку с 10-ю столбцами, где все неиспользуемые элементы имеют значение Null
0
96 / 92 / 16
Регистрация: 13.04.2015
Сообщений: 545
05.12.2015, 18:14  [ТС] 5
Апострофф, простите, а как мне заполнить этими данными определенные текстбокс.
состряпал быстренько пример
Вложения
Тип файла: 7z 123456.7z (17.8 Кб, 15 просмотров)
0
96 / 92 / 16
Регистрация: 13.04.2015
Сообщений: 545
05.12.2015, 18:15  [ТС] 6
pashulka, состряпал пример. спасибо работает. но как теперь мне вбить эти значения в текстбоксы?
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
05.12.2015, 18:31 7
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub ComboBox1_Change()
    With ComboBox1
         If .ListIndex = -1 Then Exit Sub
         For iColumn = 1 To 4
             Controls("TextBox" & iColumn) = .List(.ListIndex, iColumn - 1)
         Next
    End With
End Sub
 
Private Sub UserForm_Initialize()
    With Worksheets("Лист1")
         ComboBox1.List = .Range(.Cells(2, 1), .Cells(.Rows.Count, 4).End(xlUp)).Value
    End With
End Sub
И не забудьте предварительно добавить ещё одно текстовое поле с именем TextBox4


P.S. Если же текстовых полей немного, например, три, то можно и без цикла :

Visual Basic
1
2
3
4
5
6
7
8
Private Sub ComboBox1_Change()
    With ComboBox1
         If .ListIndex = -1 Then Exit Sub
         TextBox1 = .List(.ListIndex, 0)
         TextBox2 = .List(.ListIndex, 1)
         TextBox3 = .List(.ListIndex, 2)
    End With
End Sub
1
96 / 92 / 16
Регистрация: 13.04.2015
Сообщений: 545
05.12.2015, 19:05  [ТС] 8
pashulka, спасибо огромное !! все получилось!
их то немного, дело не в этом. С циклом не получится, т.к.мне не все столбцы нужны и текстбоксы не по порядку номера
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
05.12.2015, 19:26 9
Цитата Сообщение от Aleks777 Посмотреть сообщение
С циклом не получится, т.к.мне не все столбцы нужны и текстбоксы не по порядку номера
Вот пример невозможного

А если серьёзно, то можно перебирать только нужные столбцы (в примере это 1, 3, 7, 12), да и изменить имена текстовых полей - тоже не проблема

P.S. Но для небольшого количества текстовых полей - можно оставить всё как есть и не тратить время на скачивание и тестирование файла.
Вложения
Тип файла: zip Sample_for_Aleks777.zip (16.3 Кб, 23 просмотров)
1
96 / 92 / 16
Регистрация: 13.04.2015
Сообщений: 545
08.12.2015, 00:01  [ТС] 10
все работает !!!спасибо огромное
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
08.12.2015, 02:34 11
На всякий случай (на будущее) - если уже написаны "километры" кода и менять имена контролов (в т.ч. и в редакторе ctrl+h) не хочется, то можно создать Frame и кинуть на него все нужные элементы управления. А затем, перебирать уже контролы этого Frame (пример, аналогичный предыдущему, прилагается)
Вложения
Тип файла: zip Sample_for_Aleks777v2.zip (13.9 Кб, 29 просмотров)
0
96 / 92 / 16
Регистрация: 13.04.2015
Сообщений: 545
20.12.2015, 00:34  [ТС] 12
pashulka, Приветствую. Вопрос по комбобокс снова.
Как то можно отобрать записи для комбобокса. т.е.столбец А - ФИО, столбец В - категория(1,2,3,4,,,,). к примеру ввел в текстбокс кат.3 щелкнул на комбобокс а он мне показывает ФИО кат.1,ФИО кат.2, и затем только ФИО кат.3
т.е. получается надо применить фильтр и сортировку внутри кода по идеи, но нельзя трогать исходные данные
0
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
20.12.2015, 11:52 13
Можно искать нужное значение в столбце B, и в случае его нахождения, заполнять ComboBox данными, начиная с первой строки и заканчивая найденной (без цикла)
0
96 / 92 / 16
Регистрация: 13.04.2015
Сообщений: 545
20.12.2015, 14:29  [ТС] 14
pashulka, навоял пример быстренько...как то это можно сделать?
т.е. есть сотрудники, которые могут выполнять определенный класс сложности и заявки (с классом), в комбобоксе должны собираться все сотрудники с классом не ниже класса заявки.
при этом если сотрудник занят в эти дни - то его нет в комбобоксе
Вложения
Тип файла: 7z Комбобокс.7z (6.4 Кб, 25 просмотров)
0
96 / 92 / 16
Регистрация: 13.04.2015
Сообщений: 545
20.12.2015, 16:49  [ТС] 15
pashulka, Нашел выход через создание новой коллекции
0
20.12.2015, 16:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2015, 16:49
Помогаю со студенческими работами здесь

Вытащить из ComboBox значения всех CheckBox
Здравствуйте. Есть комбобокс, внутри чекбоксы. Надо значения чекбоксов перенсти в другой...

Поместить значения 2х столбцов БД в 1 элемент ComboBox
Есть 2 столбца в БД: S1 | S2 DE | НIМЕЧЧИНА DJ | ДЖИБУТI DK | ДАНIЯ DM | ДОМIНIКА DO |...

При записи значения в ComboBox.SelectedValue из dataGridView(DataSet) возникает ошибка
Здравствуйте! У меня есть массив dataGridViewarray в котором храняться уже созданные...

Сохранение выбранной позиции ComboBox
Есть элемент управления поле со списком, (ComboBox) .lstSpCode.данные в котором управляются ...


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

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