Не видит combobox в excel

Обновлено: 07.07.2024

XL2010 Автор - Саня
Дата добавления - 15.01.2013 в 16:35

У меня 2003. Конечно стоило в начале это указать.
Есть вот такой вариант:
[vba]

[/vba]
Но опять же с использованием SendKeys

[admin]bagir, используйте правильные теги
Какая ж это у Вас формула?[/admin]

У меня 2003. Конечно стоило в начале это указать.
Есть вот такой вариант:
[vba]

[/vba]
Но опять же с использованием SendKeys

[admin]bagir, используйте правильные теги
Какая ж это у Вас формула?[/admin] Bagir

[/vba]
Но опять же с использованием SendKeys

[admin]bagir, используйте правильные теги
Какая ж это у Вас формула?[/admin] Автор - Bagir
Дата добавления - 15.01.2013 в 16:53

смысл-то какой?
ну раскрыли, ну показали.
программно.
дальше программа будет программно рассматривать этот список?
глазюками?
а дальше что?
смысл-то какой?
ну раскрыли, ну показали.
программно.
дальше программа будет программно рассматривать этот список?
глазюками?
а дальше что?
ikki Serge_007, теги на всех сайтах разные. Это раз. Видя ошибку, я поправил, это два. Вы же вероятно потом поверх исправили старый еще мной не редактированный текст. Serge_007, теги на всех сайтах разные. Это раз. Видя ошибку, я поправил, это два. Вы же вероятно потом поверх исправили старый еще мной не редактированный текст. Bagir

А на вопросы Зачем? отвечу просто: Я так хочу. И прошу совета можно ли это сделать. Я уже много лет в VBA и давно перестал задавать ненужные вопросы.

В дополнение скажу, что сделанное новшество понравилось всем операторам. Да впрочем они меня это и просили сделать.

А на вопросы Зачем? отвечу просто: Я так хочу. И прошу совета можно ли это сделать. Я уже много лет в VBA и давно перестал задавать ненужные вопросы.

В дополнение скажу, что сделанное новшество понравилось всем операторам. Да впрочем они меня это и просили сделать. Bagir

В дополнение скажу, что сделанное новшество понравилось всем операторам. Да впрочем они меня это и просили сделать. Автор - Bagir
Дата добавления - 15.01.2013 в 17:02

ну это важная задача, спору нет.

я просто пытался представить себе этот механизм.
макросом раскрывать список на панели.

решил спросить.
жаль - не узнал.
до свидания.

ну это важная задача, спору нет.

я просто пытался представить себе этот механизм.
макросом раскрывать список на панели.

решил спросить.
жаль - не узнал.
до свидания. ikki

ну это важная задача, спору нет.

я просто пытался представить себе этот механизм.
макросом раскрывать список на панели.

решил спросить.
жаль - не узнал.
до свидания. Автор - ikki
Дата добавления - 15.01.2013 в 17:12

Тогда скажите, чем кнопка тега означающая Код VBA (что написано во всплывающей подсказке при наведении на него курсора) на этом форуме отличается от кнопки на программерсфорум, где Вы кросс-постите? Но там Вы применили её, а здесь - теги формулы (со знаком в виде символа функций листа Excel), которые никакого отношения к VBA не имеет?

А дальше вводишь что-нибудь руками и жмешь Enter
По крайней мере так Bagir утверждает

Тогда скажите, чем кнопка тега означающая Код VBA (что написано во всплывающей подсказке при наведении на него курсора) на этом форуме отличается от кнопки на программерсфорум, где Вы кросс-постите? Но там Вы применили её, а здесь - теги формулы (со знаком в виде символа функций листа Excel), которые никакого отношения к VBA не имеет?

А дальше вводишь что-нибудь руками и жмешь Enter
По крайней мере так Bagir утверждает

Тогда скажите, чем кнопка тега означающая Код VBA (что написано во всплывающей подсказке при наведении на него курсора) на этом форуме отличается от кнопки на программерсфорум, где Вы кросс-постите? Но там Вы применили её, а здесь - теги формулы (со знаком в виде символа функций листа Excel), которые никакого отношения к VBA не имеет?

А дальше вводишь что-нибудь руками и жмешь Enter
По крайней мере так Bagir утверждает


Вот ТЕПЕРЬ поправили Автор - Serge_007
Дата добавления - 15.01.2013 в 17:15

Ну а для чего мне нужно раскрытие списка программно, ну что сказать, а вам действительно надо чтобы я тут всех грузил своими задачами? Ну воля ваша, просто если рассказал бы в двух словах, то смысл все равно был бы не ясен, и выглядело бы это все как то не очень.

Не вдаваясь в подробности опишу ситуацию. Есть список, большой такой. Есть поле поиска. Начинаем забивать в него фразу и наш список сдувается, отсеивая несовпадения.
Ну а теперь ближе к "телу". У меня есть палень в Excel. На ней сомбобокс. Есть база клиентов. Операторы кликают по комбо мышкой и забивают туда имя клиента. Если он один то загружаются его данные. Если тесок много, то нужно выбрать требуемого. Для этого и использую не просто текстовое поле, а комбобокс. Если совпадений много, но комбо заполняется ими, и далее макрос ждет дальшейшего выбора оператора. Оператор мышкой кликает по комбо и выбирает нужного.
Что сделал:
Если совпадений несколько, то после ввода имени и нажатия ентер, комбо сразу раскрывается. При этом клавишей вниз можно сразу перепрыгнуть в список и выбрать нужного. Видя сразу всех это делать намного удобней.
Ну а почему я использую именно комбобокс а не кучу других инетерсных фишек, я в двух словах тоже не скажу. В моей ситуации это удобней.
Ну вот как то так.

Ну а для чего мне нужно раскрытие списка программно, ну что сказать, а вам действительно надо чтобы я тут всех грузил своими задачами? Ну воля ваша, просто если рассказал бы в двух словах, то смысл все равно был бы не ясен, и выглядело бы это все как то не очень.

Не вдаваясь в подробности опишу ситуацию. Есть список, большой такой. Есть поле поиска. Начинаем забивать в него фразу и наш список сдувается, отсеивая несовпадения.
Ну а теперь ближе к "телу". У меня есть палень в Excel. На ней сомбобокс. Есть база клиентов. Операторы кликают по комбо мышкой и забивают туда имя клиента. Если он один то загружаются его данные. Если тесок много, то нужно выбрать требуемого. Для этого и использую не просто текстовое поле, а комбобокс. Если совпадений много, но комбо заполняется ими, и далее макрос ждет дальшейшего выбора оператора. Оператор мышкой кликает по комбо и выбирает нужного.
Что сделал:
Если совпадений несколько, то после ввода имени и нажатия ентер, комбо сразу раскрывается. При этом клавишей вниз можно сразу перепрыгнуть в список и выбрать нужного. Видя сразу всех это делать намного удобней.
Ну а почему я использую именно комбобокс а не кучу других инетерсных фишек, я в двух словах тоже не скажу. В моей ситуации это удобней.
Ну вот как то так. Bagir

Ну а для чего мне нужно раскрытие списка программно, ну что сказать, а вам действительно надо чтобы я тут всех грузил своими задачами? Ну воля ваша, просто если рассказал бы в двух словах, то смысл все равно был бы не ясен, и выглядело бы это все как то не очень.

Не вдаваясь в подробности опишу ситуацию. Есть список, большой такой. Есть поле поиска. Начинаем забивать в него фразу и наш список сдувается, отсеивая несовпадения.
Ну а теперь ближе к "телу". У меня есть палень в Excel. На ней сомбобокс. Есть база клиентов. Операторы кликают по комбо мышкой и забивают туда имя клиента. Если он один то загружаются его данные. Если тесок много, то нужно выбрать требуемого. Для этого и использую не просто текстовое поле, а комбобокс. Если совпадений много, но комбо заполняется ими, и далее макрос ждет дальшейшего выбора оператора. Оператор мышкой кликает по комбо и выбирает нужного.
Что сделал:
Если совпадений несколько, то после ввода имени и нажатия ентер, комбо сразу раскрывается. При этом клавишей вниз можно сразу перепрыгнуть в список и выбрать нужного. Видя сразу всех это делать намного удобней.
Ну а почему я использую именно комбобокс а не кучу других инетерсных фишек, я в двух словах тоже не скажу. В моей ситуации это удобней.
Ну вот как то так. Автор - Bagir
Дата добавления - 15.01.2013 в 18:06

Это кажется невероятно простым кодом. Я просто не вижу, что случилось.
Он называется так:

Интересно, что это работает, когда InvokeRequired возвращает true, но не работает, когда возвращает false.

EDIT:
Я обнаружил, что selectionForm.IsHandleCreated в настоящее время false . Это приводит к тому, что InvokeRequired возвращает false, но также почему вызов setter регулярно не работает. Я не знаю, почему для IsHandleCreated установлено значение false. Форма была Show() n.

Не знаю, почему ваш код не работает - я попробовал, и он работает нормально.

Тем не менее, ниже приведен более простой код, который также работает - вы можете обнаружить, что делать это таким образом, вместо этого убирает вашу проблему. Это предполагает, что нет другой причины, по которой вам нужно пройти через это свойство - это довольно необычный способ сделать что-то.

Здесь мы просто передаем список прямо в метод items.AddRange() в comboBox.

Я подозреваю, что это не сработает для вас - что-то еще происходит, но я попробовал это как из фонового рабочего (где InvokeRequired - true), так и из основного потока пользовательского интерфейса.

Мой другой ответ в этом потоке действительно показывает способ сделать это, если вы можете получить код, предоставляющий вам список. Поскольку это звучит так, как вы не можете, я предоставляю этот ответ.

Похоже, что ключевая проблема заключается в том, что когда свойство называется combobox, оно еще не инициализировано. Лучший ответ для этого - убедиться, что это не происходит в вызывающем коде.

Если вы не можете этого сделать, вам нужно подождать, пока свойство будет установлено до его использования, чтобы заполнить выпадающее поле.

Я бы сделал это, имея частный список, который устанавливается в настройщике свойств. В рамках события загрузки формы я затем помещал бы некоторый код (возможно, в фоновый рабочий), который будет ждать, пока частный список не станет нулевым, а затем назначит его в поле со списком.

Взгляните на этот пост Jon Skeet here, где он обсуждает, как правильно дождаться, когда переменная будет задана другим потоком. Вы будете очень осторожны при этом - проблемы с нарезкой могут быть неприятными.

Доброго дня!
Я новичок в Экселе. Пробую сделать инструмент для ведения базы данных объектов.
Если не трудно, помогите, пожалуйста, разобраться как мне воплотить в жизнь задуманное.
1. Появилась мысль вывод данных по объекту сделать через UserForm. В выпадающем списке (диапазон объекты) выбирается объект и при нажатии "Вывести данные по объекту",соответственно, данные объекта выводятся в соответствующие ячейки UserForm, а после нажатия кнопки "Вывести данные в таблицу и закрыть", данные выводятся в таблицу и UserForm закрывается.
2. Ввод нового объекта тоже делается через UserForm, при этом:
- При вводе нового объекта необходима проверка на совпадение наименования вводимого объкта с уже существующим с таким же названием объектом в БД;
- Данные по новому объекту должны вставляться в первую попавшуюся пустую строку диапазона АВ7:АВ108, не зависимо от местоположения этой пустой строки (так как некоторые объекты со временем будут переноситься из БД в архив и будут возникать пустые строки)
3. Как организовать перенос данных объекта с листа "ОБЪЕКТЫ-ОСНОВНАЯ ТАБЛИЦА" на лист "ОБЪЕКТЫ-ОСНОВНАЯ Архив" через UserForm с последующим удалением с листа "ОБЪЕКТЫ-ОСНОВНАЯ ТАБЛИЦА" ? Причём на листе "ОБЪЕКТЫ-ОСНОВНАЯ Архив" данные по переносимому объекту должны вставляться в первую попавшуюся пустую строку диапазона D7 : D108, не зависимо от местоположения этой пустой строки (Тут тоже возникнет ситуация, когда некоторые объекты со временем будут удаляться и будут возникать пустые строки).
4. Как организовать удаление данных объекта с листа "ОБЪЕКТЫ-ОСНОВНАЯ Архив" через UserForm?

Мне главное - понять принцип, как это работает. Потом я уже сам попробую допинать.

Доброго дня!
Я новичок в Экселе. Пробую сделать инструмент для ведения базы данных объектов.
Если не трудно, помогите, пожалуйста, разобраться как мне воплотить в жизнь задуманное.
1. Появилась мысль вывод данных по объекту сделать через UserForm. В выпадающем списке (диапазон объекты) выбирается объект и при нажатии "Вывести данные по объекту",соответственно, данные объекта выводятся в соответствующие ячейки UserForm, а после нажатия кнопки "Вывести данные в таблицу и закрыть", данные выводятся в таблицу и UserForm закрывается.
2. Ввод нового объекта тоже делается через UserForm, при этом:
- При вводе нового объекта необходима проверка на совпадение наименования вводимого объкта с уже существующим с таким же названием объектом в БД;
- Данные по новому объекту должны вставляться в первую попавшуюся пустую строку диапазона АВ7:АВ108, не зависимо от местоположения этой пустой строки (так как некоторые объекты со временем будут переноситься из БД в архив и будут возникать пустые строки)
3. Как организовать перенос данных объекта с листа "ОБЪЕКТЫ-ОСНОВНАЯ ТАБЛИЦА" на лист "ОБЪЕКТЫ-ОСНОВНАЯ Архив" через UserForm с последующим удалением с листа "ОБЪЕКТЫ-ОСНОВНАЯ ТАБЛИЦА" ? Причём на листе "ОБЪЕКТЫ-ОСНОВНАЯ Архив" данные по переносимому объекту должны вставляться в первую попавшуюся пустую строку диапазона D7 : D108, не зависимо от местоположения этой пустой строки (Тут тоже возникнет ситуация, когда некоторые объекты со временем будут удаляться и будут возникать пустые строки).
4. Как организовать удаление данных объекта с листа "ОБЪЕКТЫ-ОСНОВНАЯ Архив" через UserForm?

Мне главное - понять принцип, как это работает. Потом я уже сам попробую допинать.

Мне главное - понять принцип, как это работает. Потом я уже сам попробую допинать.

Заранее спасибо! Автор - ILIA-PLC
Дата добавления - 30.03.2020 в 17:34

Я могу щелкнуть свой ComboBox и увидеть значения Column1 и Column2, но после того, как я щелкну по выключенному ComboBox, всегда отображается значение в Column1, и я хочу, чтобы отображалось значение Column2.

enter image description here

enter image description here

Я попробовал это:

Это не установило ценность, поскольку я думал, что это будет.

Я попробовал это:

Это не установило ценность, поскольку я думал, что это будет.

Как заставить ComboBox отображать значение в столбце 2 после выбора?

В выпадающем списке ComboBox могут отображаться несколько столбцов, но после выбора строки в качестве текста может отображаться только один столбец. Чтобы отобразить второй столбец, используйте свойство Налоговый столбец.

Альтернатива, которую вы можете использовать без VBA.

Источник строки со списком (с учетом вашей ситуации):

По сути, сделайте ваш второй столбец составным единым полем через SQL.

Связанный столбец: 1, Количество столбцов: 2, Ширина столбцов: 0 см; 4 см

Вы можете использовать эту технику для отображения того, что вы хотите, построив строковое представление в виде одного поля.

Если вас интересует только внешний вид, есть обходной путь

Используйте текстовое поле с правой стороны поля со списком. Установите количество столбцов в поле со списком равным 2. Установите ширину списка, размер и текста, и комбинированного текста (a + b). Установите ширину столбцов для размера комбинации и размера текста (a; b). Поскольку свойство columns представляет собой массив столбцов на основе 0, установите для источника текстового поля значение «= [MyCombo] .Columns (1)», чтобы отобразить второе поле. Когда вы выпадаете, первый столбец должен находиться точно под полем со списком, а второй столбец под текстовым полем. Когда вы обновляете комбо, текстовое поле должно соответственно обновлять его значение. Кроме того, вы можете установить для свойств текстового поля значение true и значение false.

Читайте также: