|
|
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Уважаемые профи, перчитал кучу страниц интернета но так и не смог найти ответ. Сделал userform где есть куча взаимосвязанных комбобоксов и текстбоксов. Перечитав Ваш форум нашел как связать два комбика . Попытался такимже способом привязать к двух третий, но ничего не вышло. Купил несколько книг по программированию в Excel на VBA но там такие вещи не рассматриваются. Буду очень признателен, если Вы поможете мне увязать кобики между собой и подскажете хорошую литературу для VBA в Excel. В приложении Вы можете найти образец файла с формой. Буду признателен за любую помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2008, 11:08 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Неужели перевелись на Руси богатыри? Неужели никто не знает как это сделать? Или подобная помощь за бесплатно не делается? Подскажите хотябы толковую литературу по этому воросу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 09:28 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Ты как-то странно связываешь ІМХО. Сколько у тебя переменных комбобоксов. Пока что 1. Т.е. в остальных значения чётко связанны? Или в первом свободны, во втором - ограничены, а в третьем - ещё больше? И вообще, что-то мне подсказывает, что сделать то, что надо на Access будет намного проще, и даже без програмирования. Так что копай туда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 14:34 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
dd44, Чтобы привязать к двух третий, или другими словами, в двумя третьего, можно хотябы использовать Dictionary. Здесь чуда никакого нет и старик Хотябыч здесь не требуется. Посадите на форму комбобокс и такимже способов два других. Далее скопируйте в форму код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. Вы увидите, что выбор в одном комбобоксе определяет список в последующем. Вот таким способом они и связаны. Успехов Не богатырь не на Руси :0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 16:30 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Шыфл ...И вообще, что-то мне подсказывает, что сделать то, что надо на Access будет намного проще, и даже без програмирования. Так что копай туда. Я не смотрел исходник, но вообще, если серьезно, то естественно желательнее SQL запросами, если данных много. Мой же пример демонстрирует каскадную связку как таковую, отвечая таким образом на исходный вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 16:38 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Спасибо Шыфл и VladConn, 2 Шыфл, Все просто: выбираешь плательщика, в соответствии с выбором формируется комбик получателя, в соответствии с выбором полчателя формируется комбик наименование платежа и т.д. 2 VladConn С Dictionary пока не знаком, осваиваю Васик только месяц. Пошел разбираться. Еще раз моя благодарность Вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2008, 10:39 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
А вот и первый вопрос, куда вставлять этот код Код: plaintext 1. 2. 3. 4. 5. Если вставить в "Module(Code)", выдает ошибку "MobjCombo1 - Veriable not defined". P.S. Мое почтение богатырям из Коннектикута :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2008, 10:57 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
VladConn, Буду Вам обязан, еси Вы закомментируете Ваш код, чтобы мне было проще разбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2008, 11:17 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Уважаемый VladConn, Почитал про Dictionary и расстроился, вот что пишут в хелпе: The key is used to retrieve an individual item and is usually a integer or a string, but can be anything except an array. Т.е. ключ не может быть массивом, каким же тогда образом это мне поможет. Возможно я открыл "словарь" вверх ногами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2008, 12:14 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
dd44, Отвечаю по порядку. Для использования Dictionary подключите библиотеку Microsoft Scripting Runtime так, как обычно подключаются библиотеки. Свой код я, помнится, безыскусно вставил в код формы, но это не догма. Что касается Key, то ваше сомнение исходит, видимо, из недостаточного понимания сути дела. Dictionary сам заменяет собой Array. Первый в каком то узком смысле как бы второй с прямым доступом (метод Exists, например). А Key, в свою очередь, сам может быть Dictiоnary, да хоть каким классом, т.е., вообще говоря, чем угодно. Успехов. vladconn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2008, 17:00 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Я, конечно, не знаю что такое Scripting.Dictionary Может это круче. :) Но если просто в лоб, по Ехселосвки, то тут 6 строчек кода, и 5 минут на заполнение. :) З.Ы. Естесвенно, что с увеличением комбобоксов и вариантов, такой способ не пройдёт, но на 3 - 4 с по 3-4 варианта очень даже покатит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2008, 19:36 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Упс, не зааттачилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2008, 19:37 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Между прочим лист Ехселя - практически идеальная хэштаблица :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2008, 19:41 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
ШыфлЯ, конечно, не знаю что такое Scripting.Dictionary Может это круче. :) Но если просто в лоб, по Ехселосвки, то тут 6 строчек кода, и 5 минут на заполнение. :) З.Ы. Естесвенно, что с увеличением комбобоксов и вариантов, такой способ не пройдёт, но на 3 - 4 с по 3-4 варианта очень даже покатит. Шыфл, что вообще может быть круче Праги? Всегда мечтал там побывать. Касательно примера - это голая демонстрация возможности как таковой каскадной связи комбо боксов. Можно придумать еще с дюжину альтернативных способов. Успехов. :0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2008, 20:33 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Кстати, почему 3 - 4? Если я заполнял вручную в примере, это не значит, что в жизни я бы так и поступил, наверно бы автоматизировал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2008, 20:35 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
VladConnКстати, почему 3 - 4? Если я заполнял вручную в примере, это не значит, что в жизни я бы так и поступил, наверно бы автоматизировал. Вот в том то и дело, что было бы из чего автоматизировать :) Потому как таки придётся куда-то заполнять вручную. И изначально для этого больше подходят БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2008, 20:46 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
So, what the point? Что есть другие методы и базы данных лучше Dictionary? OK. Тогда можно совершить следующий бросок к звездам - давайте все это напишем в Оракле. Или нет - давай делать XML. Или нет - в INI файле. Прочтите вопрос: как можно связать комбо боксы. Все. Вспышки сверхновых можно не изучать. :0)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2008, 22:20 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
VladConnSo, what the point?....давайте все это напишем в Оракле. Или нет - давай делать XML. Или нет - в INI файле. :0)) Очень суровы челябинские програмисты... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 03:02 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Уважаемые Шыфл, То что Вы показали в примере я и так могу сделать, но это как-то некрасиво чтоли. Хочется сделать форму, которая програмно определяла бы соотношение кобобоксов по выборке, а не забивать в столбик под каждый вариант перечень соответствий, т.к. при увеличении комбиков количество столбцов с выборкой под них будет расти геометрически. Уважаемый VladConn, Не совсем понял, каким образом "ключ" может быть массивом, если в описании четко сказано, что чем угодно, кроме массива, может надо задавать ключ определенным образом? Потом, при добавлении новой строки в первый комбик програмно не будет определяться новый "словарь", что не есть "гуд". В приложенном мною примере (первое сообщение) я связал два комбика, которые будут работать не зависимо от добавления/удаления/изменения позиций. НО, это работае только на два комбика, третий и т.д. прикрутить не удается ((. Задача состоит не только в том, чтобы просматривать имеющиеся записи, а чтобы работать с пополняющемся списком без дальнейшего вмешательства в код проги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 13:15 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
dd44Уважаемые Шыфл, То что Вы показали в примере я и так могу сделать, но это как-то некрасиво чтоли. Хочется сделать форму, которая програмно определяла бы соотношение кобобоксов по выборке, а не забивать в столбик под каждый вариант перечень соответствий, т.к. при увеличении комбиков количество столбцов с выборкой под них будет расти геометрически. Задача состоит не только в том, чтобы просматривать имеющиеся записи, а чтобы работать с пополняющемся списком без дальнейшего вмешательства в код проги. Уважаемый dd44 , Несмотря на все достижения прогресса, структуру связей необходимо где-то хранить. Именно в этом, а не во "взаимосвязывании комбобоксов" заключается суть проблемы, если вы заметили. Эксцел - это не очень подходящий инструмент для хранения данных. Лучшее, что он может предложить, это именованные диапазоны, которые, с некоторой натяжкой, могут исполнять роль базы данных связей элементов списка. Можно также попробовать работать с автофильтром, но это уже не так тривиально. Колличество этих связей будет расти геометрически независимо от выбранного способа реализации, просто как показательная функция колличества комбобоксов. Построение механизма взаимного дополнения всех связанных полей - не тривиальная задача, часто требующая последовательного заполнения таблиц "сверху вниз". У меня была похожая задача, которую я решал несколькими способами (хранения логинов для различных отделений различных компаний). Но в любом случае - сколько переменных, столько степеней свободы. При наличии ключа и индексации (в словаре, или в БД) можно ограничится одной табличкой в 2 столбика для каждой степени свободы. Непосредственно методами Эксцеля механизмы поиска придётся реализовать вручную. Я предложил именованные диапазоны. Никто не говорит, что их надо заполнять вручную. Можно реализовать алгоритм. Хранить данные для разных комбобоксов на разных листах, сделать иерархическую систему, и шаблон добавления на форме с циклом последовательного внесения и переопределения диапазонов. :) + таблица имён диапазонов. В итоге мы имеем то, что принято называть реляционной БД, только самописную, на базе Эксцеля. :) Микрософт ещё в 90х годах реализовал всё это под торговой маркой Access. Можно это чудо углублять и расширять, через систему гиперссылок на разные книги (которые тоже хранить определённым образом, а ссылки генерировать автоматически), но последнее время я занимаюсь тем, что переписываю эти чуда под Ассесс, потому как "чудо распухло и мешало ходить". И таких вот "чУдов" видел достаточно много, в том числе и на Excel 4.0 Так что выбирайте метод изходя из того, что вам на самом деле надо. Посмотрев на ваш пример я рискнул предположить, что это будет самописная эмуляция БД. ;) А оно надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 14:24 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Уважаемый Шыфл, Я прекрасно понимаю, что Эксель не самая лучшая программа для достижения поставленной мною цели. Однако я не разбираюсь, к своему стыду, в Аксессе. Кроме того, вопрос состоит в том, имеется ли возможность, программно реализовать поставленную задачу в Экселе, если ДА, то как это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 15:59 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
dd44Уважаемый Шыфл, Я прекрасно понимаю, что Эксель не самая лучшая программа для достижения поставленной мною цели. Однако я не разбираюсь, к своему стыду, в Аксессе. Кроме того, вопрос состоит в том, имеется ли возможность, программно реализовать поставленную задачу в Экселе, если ДА, то как это сделать. В Экселе это легче всего сделать используя ADO/DAO + BD Если нет, то учитывая специфику, достаточно легко сделать иерархическую структуру именованных диапазонов и листов. Или даже просто листов. Или даже просто диапазонов. Просто придётся вручную прописывать процедуры поиска элементов и добавления элементов. Циклами и ветвлениями. Что-то типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 19:10 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
dd44 Уважаемый VladConn, Не совсем понял, каким образом "ключ" может быть массивом, если в описании четко сказано, что чем угодно, кроме массива, ... Я этого не утверждал, да и нужды в этом не было. Ключ не может быть массивом, но Item тоже может быть Dictionary (впрочем. как и Key). Чем это вас не устраивает? ********************************************* Key и Item могут быть классами, а значит и словарями. ********************************************* Мой пример демонстрирует возможность какскадной связки 3х комбо боксов даже без этой хитрости. Связка, это как раз то, что вы спрашивали. Существует еще много других способов и возможностей. Например, вложенные друг в друга словари Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. или Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Успехов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 20:19 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
2 VladConn Мне стало интересно, могут ли эти словари хранить данные? Если нет, то задача наполнения комбобоксов из словарей разделяется на наполнения словарей из источника данных + наполнение комбобоксов из словарей. Вопрос не в том, каким образом реализовать связь. Вопрос в том, где хранить данные под эти связи? Логично, что не в коде программы :/ Тогда, скорее всего (если уж не в БД) прямо в листах Экселя :) З.Ы. Вот, в догонку, функция добавления нового значения и расширения вертикального диапазона на это значение Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 21:10 |
|
||
|
Связь трех и более combobox в Excel
|
|||
|---|---|---|---|
|
#18+
Вы имеете ввиду, предназначены ли словари для хранения данных вне программы? Нет, не предназначены. Они предназначены для хранения данных в программе. Для хранения данных вне программы используют базы данных, XML, INI, TXT, LOG файлы и Property Bags, а также registry. Что касается разделения задач, это зависит от потребности. Бывает надо делать каскадную презентацию, основываясь на чтении малоструктурированного текстового файла, изъятия из его разных мест разного сорта информации (RegExp) и показа их на экране вo взаимосвязанных комбо боксax. Сделать это удобно через словари. Успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2008, 23:15 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=202&tid=2162736]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 366ms |

| 0 / 0 |
