|
saper
|
|
Обработка контролов на листе26.01.2009, 13:01. Показов 3891. Ответов 13
Метки нет (Все метки)
На листе динамически создаются несколько разных контролов,
среди них ComboBox'ы, сколько их будет, я не знаю. Эти ComboBox'ы надо обработать в цикле. Подскажите пожалуйста, как это проще сделать. |
|
| 26.01.2009, 13:01 | |
|
Ответы с готовыми решениями:
13
Обработка информации на листе Обработка события на листе
|
|
1 / 1 / 1
Регистрация: 29.12.2008
Сообщений: 108
|
|
| 26.01.2009, 21:45 | |
|
Один только вопрос, а что с ними нужно делать???
Сергей
0
|
|
|
saper
|
|
| 26.01.2009, 22:45 | |
|
Мне надо в цикле присвоить значения и имена combobox'ов массиву
|
|
|
saper
|
|
| 27.01.2009, 20:18 | |
|
Вообще задача такая:
на одном листе пользователь формирует списки данных в виде столбцов, количество списков и количество записей в списках может меняться. Надо на другом листе динамически создать столько ComboBox'ов, сколько столбцов, и присвоить им диапазон равный количеству записей. Кстати, присвоить ComboBox'у диапазон программно, у меня тоже не получается. Пожалуйста подскажите что-нибудь, а то может я на ложном пути? |
|
|
1 / 1 / 1
Регистрация: 29.12.2008
Сообщений: 108
|
|
| 28.01.2009, 00:12 | |
|
Вообще, если подходит, можно создать ComboBox (1 шт.) в котором будут отображаться заговки столбцов, а рядом ListBox (тоже 1 шт.), в котором, в зависимости от выбора заголовка столбца в ComboBox, будут отображаться данные содержимого этого столбца. По-моему это гораздо интереснее, чем создавать кучу всеких Controls'ов. К тому же для постоянного добавления новых Controls должен висеть класс с событием типа Worksheet_Change, чтобы отслеживать изменения и при надобности добавлять Control. Вроде бы сильно громоздко получается.
Сергей
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 16
|
||||||||||||||||
| 28.01.2009, 13:25 | ||||||||||||||||
|
Добрый день!
Сделать это можно, например так: Для проверки примеров создайте новую книгу с листами 'Лист1' и 'Лист2' и добавьте к ней модуль. В модуль допишите один (можно и оба) варианта кода. Второй вариант не совсем по условию вопроса но тоже может на что-нибудь сгодиться ![]() Единственное ограничение: пользователь при вводе не должен пропускать ячейки, т.е. Значения должны следовать в столбце одно за другим без разрывов т.к. из столбца здесь отбирается количество строк равное количеству заполненных ячеек (ф-ция Count). Но это тема другого вопроса. Можно конечно и сканировать столбец и просто задать например 5000 значений в список и еще много чего. Можно лист2 создать и из кода ... Много чего можно !!! Во простор для экспериментов!!! .===== ВАРИАНТ 1 ======== Создаются ComboBox-ы на Листе2 по количеству заполненных колонок на листе 1.
Здесь я правда ограничил количество якобы заполненных колонок до 5
Выбор из списка. По количеству заполненных колонок на листе 1, ячейкам на Листе2 присваиваются свойства списков. Также создаются именованные диапазоны nar1-narX, где X- количество заполненных столбцов на листе 1
0
|
||||||||||||||||
|
saper
|
|
| 28.01.2009, 15:17 | |
|
Большое спасибо всем за подробную информацию
Еще один вопрос - как присвоить объектной переменной ссылку на уже имеющийся на листе conrol. И если можно, порекомендуйте литературу по VBA Excel |
|
|
saper
|
|
| 28.01.2009, 15:24 | |
|
А как можно определить, вносились изменения на лист или нет, может флаг какой есть?
За ранее спасибо. |
|
|
1 / 1 / 1
Регистрация: 29.12.2008
Сообщений: 108
|
|
| 28.01.2009, 15:30 | |
|
Как я и говорил, - нужно вешать событие Worksheet_Change, который будет отлавливать изменения и добавлять Controls, в зависимости, добавился ли новый столбец или нет.
Сергей
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 16
|
|
| 28.01.2009, 17:38 | |
|
* Еще один вопрос - как присвоить объектной переменной ссылку на уже * имеющийся на листе conrol.
* И если можно, порекомендуйте литературу по VBA Excel Посмотрите еще раз на пример 1 функцию чтения данных из TextBox-сов. Dim tWS as Worksheet Dim tSh as OLEObject Set tWS=ActiveWorkbook.Worksheets('ИмяЛиста' ) Set tSh = tWS2.OLEObjects(Индекс(integer) или имя(string)объекта) С уважением, Андрей.
0
|
|
|
Comanche
|
|
| 30.01.2009, 11:51 | |
|
Если тебе эти комбобоксы нужны ТОЛЬКО для того, чтобы в определённой ячейке можно было вводить данные ВЫБОРОМ ИЗ СПИСКА, который (список) есть просто некая область на этом (или другом) листе Эксель, 'отображаемая' в твой комбобокс, то может быть, стоит пойти более простым путём? Т.е. не создавать на листе контролы ComboBox динамически, а просто использовать Данные >> Проверка... >> Тип данных := 'Список' >> Источник := Область_На_Листе. Тогда при установке курсора на ячейку с такой 'Проверкой' в этой ячейке автоматом появится выпадающий список (аналог твоего комбобокса), в котором будут только те значения, что перечислены в 'Область_На_Листе'.
М.б., конечно, я тебя не понял, и у тебя всё сложнее. |
|
|
saper
|
|
| 30.01.2009, 15:37 | |
|
Возможно то же самое можно было бы сделать и с помощью списков, но я почему-то сразу пошел по пути комбобоксов, только вот запнулся на полпути.
А вообще программа уже готова и отлично работает, спасибо всем, особенно AndreySZ. |
|
|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 16
|
|
| 30.01.2009, 23:33 | |
|
Да лишь бы на пользу
![]() Успехов! С уважением, Андрей.
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 16
|
|
| 30.01.2009, 23:33 | |
|
Да лишь бы на пользу
![]() Успехов! С уважением, Андрей.
0
|
|
| 30.01.2009, 23:33 | |
|
Помогаю со студенческими работами здесь
14
Обработка большого количества объектов на листе
Обработка события Change на листе - что я делаю не так? Обработка диапазона на раб. листе XAML. Выравнивание контролов в ToolBar и StatusBar. + ширина контролов в процентах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|