powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Связь трех и более combobox в Excel
7 сообщений из 32, страница 2 из 2
Связь трех и более combobox в Excel
    #35105539
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый VladConn,
Не могли бы Вы закоментировать код Вашего последнего сообщения, буду очень признателен.

Мда, как говорится сложее китайской грамоты только китайская азбука морзе. Ну ничего мы не привыкли отступать, нам расколоть его поможет киножурнал хочу все знать.
...
Рейтинг: 0 / 0
Связь трех и более combobox в Excel
    #35107098
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 VladConn
VladConn Вы имеете ввиду, предназначены ли словари для хранения данных вне программы? Нет, не предназначены. Они предназначены для хранения данных в программе. Для хранения данных вне программы используют базы данных, XML, INI, TXT, LOG файлы и Property Bags, а также registry.
Мне на самом деле сразу стало интересно, где будет автор топика хранить данные. Причём, насколько я понял, связанные комбобоксы нужны ни для чего-то-там, а именно для заполнения эксцелевской таблички данными. :) Хотя, мой телепатор может и ошибаться...
А учитывая острое нежелание обратиться к БД, я думаю, что о "XML, INI, TXT, LOG файлы и Property Bags" говорить не приходится. :/
Человек хочет хранить данные в Эксцеле, очивидно небезосновательно предпологая, что его хватит... Что спорно :)

VladConn Что касается разделения задач, это зависит от потребности. Бывает надо делать каскадную презентацию, основываясь на чтении малоструктурированного текстового файла, изъятия из его разных мест разного сорта информации (RegExp) и показа их на экране вo взаимосвязанных комбо боксax. Сделать это удобно через словари.
Успехов
Очень интересно! Из них можно соорудить реальный электронный переводчик, если проиндексировать контент литературных переводов! :)

Но я думаю, что в данной сетуации основная задача какраз и состоит, чтобы структурировать данные и создать инструмент для их дальнейшей структурализации. Хотя, и в эксцеле.

2 dd44
Это не китайская грамота, это VBA. Язык роботов от Microsoft. Роботов, какими их себе мало кто представлял :) Робо-клерки. :)

Мне понадобился похохожий инструмент, только данные я беру из Access, а презентирую их в похожих связанных комбобоксах.

Чуть чуть изменил функции поиска и добавления(на те, что я уже показывал). Но всёравно это ещё надо реально доработать напильником. Нельзя вкладывать больше 10 подменю, нельзя удалять строчки. Вся база на одном листе Эксцель (т.е максимум 128 справочников всех уровней) Да и баги всякие. Но при желании можно довести до ума. Даже листочек пометить как "Very Hiden", чтоб нікто не догадался :) І будет работать :)

З.Ы. Еслі что, могу закаментіть і помочь разобраться дальше :)
...
Рейтинг: 0 / 0
Связь трех и более combobox в Excel
    #35108888
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Шыфл,
Спасибо за вариан решения, поизучаю.

P.S. Под китайской грамматой я имел ввиду те функции которые Вы используете и которые я не знаю.
...
Рейтинг: 0 / 0
Связь трех и более combobox в Excel
    #35110599
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Шыфл и VladConn,
Удалось увязать три комбика между собой так, чтобы список второго зависел от выборки первого и список третьего зависел бы от выбоки первого и второго.
Все это удалось без добавления дополнительных перечней в документе, только за счет програмного кода и будет работать вне зависимости от добавления/удаления строк.

Буду признателен, за Ваши комментарии, может Вы сможете что-то оптимизировать.
Заранее спасибо.
...
Рейтинг: 0 / 0
Связь трех и более combobox в Excel
    #35112159
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется странным, что твои связанные комбобоксы по сути копируют AutoFilter. Я про него уже упоминал. Посмотри тут . Там есть эфективные поиски уникальных значений. Списка. Если объединить с автофильтром, будет летать :)
А твоя функция поиска очень избыточна и не эфективна при больших колличествах строчек (ничиная от 100).

Это функция поиска отфильтрованных рядов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub poisk()
Dim IRange As Range
Rows( 1 ).AutoFilter Field:= 2 , Criteria1:="Компания 1"
For Each IRange In ActiveSheet.AutoFilter.Range.Rows
If Not IRange.Hidden Then
MsgBox (IRange.Row)
End If
Next IRange
ActiveSheet.AutoFilterMode = False
End Sub

Это функция списка уникальных значений для отфильтрованных рядов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub postavshiki()
Dim c As Range
Dim f1 As Range
Dim i As Integer
i =  1 
Worksheets("List").Activate
Columns("C:C").Select
For Each c In Worksheets("List").Range("C2:C14")
If Not c.EntireRow.Hidden Then
Debug.Print c.Address
Set f1 = Selection.Find(What:=c.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
' firstaddress = f1.Address
If Range(f1.Address).Row = Range(c.Address).Row Then
Worksheets("list2").Cells(i,  2 ).Value = c.Value
i = i +  1 
End If
End If
Next c
End Sub
П.С. В принципе и так работает :)
...
Рейтинг: 0 / 0
Связь трех и более combobox в Excel
    #35112844
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Шыфл,
не могли бы Вы закоментировать строки кода, чтобы было проще разобраться.

С уважением,
Дмитрий
...
Рейтинг: 0 / 0
Связь трех и более combobox в Excel
    #35113939
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub poisk()
Dim IRange As Range 
Rows( 1 ).AutoFilter Field:= 2 , Criteria1:="Компания 1" ' включение автофильтра на 2 поле по ключу Компания1
For Each IRange In ActiveSheet.AutoFilter.Range.Rows ' запускаем цикл по всем рядам отфильтрованного диапазона
If Not IRange.Hidden Then ' еслі рад не скрыт  (отфільтрован)
MsgBox (IRange.Row) ' получаем номер этого ряда
End If
Next IRange
ActiveSheet.AutoFilterMode = False 'выключаем автофільтр
End Sub

Этот код не мой, я только дополніл проверку на відімость ряда. Как работает особо не вникал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub postavshiki()
Dim c As Range
Dim f1 As Range
Dim i As Integer
i =  1 
Worksheets("List").Activate ' нужный лист
Columns("C:C").Select ' нужная колонка
For Each c In Worksheets("List").Range("C2:C14") ' цикл по нужному диапазону. Как ваша первая и последняя строчка
If Not c.EntireRow.Hidden Then ' если ряд не отфильтрован
Debug.Print c.Address ' вывод адреса ячейки
Set f1 = Selection.Find(What:=c.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False) ' собственно поиск по столбцу значений переменной цыкла (ячейки) 
' firstaddress = f1.Address
If Range(f1.Address).Row = Range(c.Address).Row Then 'если ряды сопадают
Worksheets("list2").Cells(i,  2 ).Value = c.Value 'добавляем значение в список на другом листе 
i = i +  1  ' счётчик списка на другом листе
End If
End If
Next c
End Sub
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Связь трех и более combobox в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]