Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/296: Рейтинг темы: голосов - 296, средняя оценка - 4.66
161 / 17 / 2
Регистрация: 14.07.2011
Сообщений: 74

Добавление выпадающего списка к ячейке

31.08.2012, 10:25. Показов 56930. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем, привет!
Ситуация: программно создается несколько книг. Необходимо что бы в ячйках A1, A2,A3 созданных книг появлялся выпадающий список известных значений(значения текстовые).

Помогите с реализацией!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.08.2012, 10:25
Ответы с готовыми решениями:

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

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

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

33
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.08.2012, 10:35
Запишите в макрос создание выпадающего списка, перенесите в свою программу.
Исправьте разделитель списка на запятую, например
Visual Basic
1
2
3
4
With Range("A1:A3").Validation
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="мама,мыла,раму"
End With
2
161 / 17 / 2
Регистрация: 14.07.2011
Сообщений: 74
31.08.2012, 11:30  [ТС]
А можно не много поподробнее! А то не совсем понятно...
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.08.2012, 11:39
Что именно непонятно? F1 - запись макроса...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38001 / 21033 / 4301
Регистрация: 12.02.2012
Сообщений: 34,598
Записей в блоге: 14
31.08.2012, 16:22
Цитата Сообщение от matresh Посмотреть сообщение
не много поподробнее
- т.е. "короче"?
0
161 / 17 / 2
Регистрация: 14.07.2011
Сообщений: 74
31.08.2012, 17:31  [ТС]
Вы не могли подсказать, что означает каждая функция?!
0
13 / 13 / 2
Регистрация: 07.04.2010
Сообщений: 74
31.08.2012, 17:45
Ексель дает возможность задать возможные значения ячейки. Дальше либо выбрать из списка либо ввести вручную, но только из списка!
Красиво разжевано на
 Комментарий модератора 
planetaexcel - ссылка удалена, читайте правила!

Макрос собственно задал список, можно указать диапазон. Тогда значения берутся из области на листе.
Заполни чемто диапазон C3:C10 и запусти макрос. Потом кликни на А1, справа появится триугольник комбабокса. Попробуй вручную ввести неверное значение.
Visual Basic
1
2
3
4
With Cells(1, 1).Validation
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$C$3:$C$10"
    End With
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.08.2012, 17:54
Цитата Сообщение от matresh Посмотреть сообщение
Вы не могли подсказать, что означает каждая функция?!
Мог бы. Но только за большие деньги
Вы можете сами найти ответы: в редакторе VBA поставьте курсор в слово например With и нажмите F1. Если с аглицким туго, найдите в инете справку по VBA для Офис-97 на русском. Ну или скачайте литературу по VBA: Учебники, справочники, самоучители
0
13 / 13 / 2
Регистрация: 07.04.2010
Сообщений: 74
31.08.2012, 18:04
Эта конструкция задает параметры функции проверки значений, пишется одной строчкой: Cells(1, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= xlBetween, Formula1:="=$C$3:$C$10".

Просто принято делить. Использовать With нужно когда еще чтото делается над тем же объектом
Нижнее подчеркивание - знак переноса для VBA.
Нуже два примера работают одинаково, но читать удобнее первый
Делает она то что на скрине.
В том окошке еще много чего интересного, вот за это и отвечают остальные строки.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
    With Cells(1, 1).Validation
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$I$11:$I$14"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
Visual Basic
1
2
3
4
5
6
7
8
9
Cells(1, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= xlBetween, Formula1:="=$I$11:$I$14"
Cells(1, 1).Validation.IgnoreBlank = True
Cells(1, 1).Validation.InCellDropdown = True
Cells(1, 1).Validation.InputTitle = ""
Cells(1, 1).Validation.ErrorTitle = ""
Cells(1, 1).Validation.InputMessage = ""
Cells(1, 1).Validation.ErrorMessage = ""
Cells(1, 1).Validation.ShowInput = True
Cells(1, 1).Validation.ShowError = True
2
31.08.2012, 18:14

Не по теме:

Казанский, Не стоит сразу посылать маны курить. Все когда-то начинали. Порой пара толковых объяснений дает больше толку и хороший пинок что разобраться дальше нежели прочитанный талмуд.
До прошлой недели сам использовал элементы управления (третий способ в ссылке на "планету"), у коллег машина ругается на наличие макроса со всеми вытекающими...

0
31.08.2012, 18:31

Не по теме:

Formanter,
а у Вас вся спина белая в посте недопустимая ссылка, см. https://www.cyberforum.ru/announcement.php?a=3 , п.5.8. Щас модеры придут...

1
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
01.09.2012, 01:46
А что там недопустимого было - я так и не понял. Запрещены только ссылки на форумы
0
01.09.2012, 12:39

Не по теме:

Formanter, оч. хочется посмотреть на Ваше отношение к "отсыланию в маны" постов этак через 2000. да даже хотя бы через 500

0
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
01.09.2012, 19:44
Давать ссылку на маны вместо решения - не нужно.
Если маны даются вдовесок к решению - это больше, чем просто помощь.
0
0 / 0 / 0
Регистрация: 26.06.2013
Сообщений: 5
26.06.2013, 11:37
Товарищи))

У меня такая проблема... Хочу в выпадающий список в ячейке вставить массив данных.
Пробовала в формулу писать имя массива, не выходит..

Конечно есть вариант написать массив на скрытый лист, потом сослаться в формуле на диапозон.
Но хочется без лишнего веса обойтись, компы тормозные. Реально сделать???
0
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
26.06.2013, 12:20
Здравствуйте, @Feel_,

Поступил бы так:

Visual Basic
1
2
3
4
5
6
7
8
9
    Dim lst(2) As String 'Â ýòîò ìàññèâ âû çàíîñèòå ñâîè äàííûå.
    'Íàïðèìåð:
    lst(0) = "Êðàñíûé"
    lst(1) = "Ñèíèé"
    lst(2) = "Çåëåíûé"
    'Ñïèñêè ñîçäàþòñÿ â äèàïàçîíå A1:A3.
    Range("A1:A3").Validation.Add Type:=xlValidateList, Formula1:=Join(lst, ",")
    'Функция Join - возвращает строку, в которой элементы массива (первого аргумента функции)
    'перечислены через разделитель (второй аргумент функции - в данном случае запятая)
С уважением,
Aksima
2
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
26.06.2013, 13:00
Если строка получится длиннее 255 - то при открытии сохранённого xlsm с такой проверкой будет ругань.
xlsb терпеливее - но пределы не изучал.
0
0 / 0 / 0
Регистрация: 26.06.2013
Сообщений: 5
26.06.2013, 13:44
Не получается так((( ругается... Ну ладно.. сделала уже с листом.. Надо скорее просто.... Но если метод найдётся буду очень рада!!! Так как часто требуется!
0
0 / 0 / 0
Регистрация: 26.06.2013
Сообщений: 5
27.06.2013, 15:58
Ребят, а может мне кто-нибудь подскажет вариант реализации? Задача у меня такая: есть файл с адресами: Город, Улица, Дом - это столбцы. Файл для каждого региона свой, и он динамичный лежит в общем справочнике. Мы работаем с другим файлом, в который вставляется нужный листик, в зависимости от того, какой регион его открывает. Это я написала. Так вот... теперь надо, чтобы на другом листочке в столбцах Город/улица/дом, выходили выпадающие списки, причём для определённого города, только его улицы, а для улиц дома... При этом не должно быть пустых и улицы уникальны.

Я придумала два варианта реализации... Но они оба не отличаются особым успехом.

Первый: почти без VBA

с помощью VBA я создаю уникальный список городов и делаю его именем и прописываю кодом, что значение в столбце должно быть список с именем "Город"

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

Далее аналогично, этой же формулой нахожу дома для улиц.

Второй способ - не осуществила до конца, так как ступор... Создала уникальные города на отдельном листе в строку... Далее создала под каждым городом его улицы - так же уникальные... А вот теперь надо через ДВССЫЛ через VBA создать столько имён, сколько у меня вышло городов.... вообщем как это сделать.... если это реально...


Если есть другой вариант решения очень жду!!

Заранее спасибо
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
27.06.2013, 17:09
Feel, есть другой вариант макросом - на словаре словарей.
Делал. Но ограничение см.выше. Выкрутился удалением такого списка при закрытии файла, и созданием заново при открытии.
На листе только исходная база данных для списков.
И никаких имён.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.06.2013, 17:09
Помогаю со студенческими работами здесь

Наполнение выпадающего списка ComboBox
Здравствуйте. Подскажите, как можно наполнить ComboBox, который находится на одном листе (может форме), а значения выпадающего списка...

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

Макрос для выпадающего списка
Сразу оговорюсь, в макросах я близка к нулю, освоена пока только редакция макроса, записанного макрорекодером, и то путем проб и ошибок. ...

Макрос для выпадающего списка
Вообщем суть в том чтобы при выборе "статуса" появлялась "Страна/Регион", при выборе "Страна/Регион" появлялась...

Изменить длину выпадающего списка
Здравствуйте дороги форумяне! как изменить длину списка до, например 20? записанного через макрорекодер Sub Список() ' With...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Создаем микросервисы с Go и Kubernetes
golander 02.07.2025
Когда я только начинал с микросервисами, все спорили о том, какой язык юзать. Сейчас Go (или Golang) фактически захватил эту нишу. И вот почему этот язык настолько заходит для этих задач: . . .
C++23, квантовые вычисления и взаимодействие с Q#
bytestream 02.07.2025
Я всегда с некоторым скептицизмом относился к громким заявлениям о революциях в IT, но квантовые вычисления - это тот случай, когда революция действительно происходит прямо у нас на глазах. Последние. . .
Вот в чем сила LM.
Hrethgir 02.07.2025
как на английском будет “обслуживание“ Слово «обслуживание» на английском языке может переводиться несколькими способами в зависимости от контекста: * **Service** — самый распространённый. . .
Использование Keycloak со Spring Boot и интеграция Identity Provider
Javaican 01.07.2025
Два года назад я получил задачу, которая сначала показалась тривиальной: интегрировать корпоративную аутентификацию в микросервисную архитектуру. На тот момент у нас было семь Spring Boot приложений,. . .
Содержание темы с примерами на WebGL
8Observer8 01.07.2025
Все примеры из книги Мацуды и Ли в песочнице JSFiddle Пример выводит точку красного цвета размером 10 пикселей на WebGL 1. 0 и 2. 0 WebGL 1. 0. Передача координаты точки из главной программы в. . .
Основы WebGL. Простой треугольник
8Observer8 01.07.2025
Простой треугольник без трансформаций. Для трансформаций можно использовать glMatrix, как в примере: https:/ / plnkr. co/ edit/ qT6ZTwvncLPRamK5?preview На русском: . . .
Полиглотные микросервисы на C# и .NET
ArchitectMsa 30.06.2025
Полиглотная архитектура появилась не из желания усложнить жизнь разработчикам. Она родилась из практической необходимости решать разные задачи наиболее эффективным способом. В одном из проектов. . .
Стратегии кеширования
Javaican 29.06.2025
Кеширование — это хранение часто запрашиваемых данных в быстром хранилище (обычно в памяти), чтобы не обращаться к более медленному первоисточнику. Казалось бы, все просто. Но за этой простотой. . .
Наблюдаемость приложений ASP.NET Core с OpenTelemetry, Prometheus и Grafana
ArchitectMsa 29.06.2025
Наблюдаемость (observability) – это ключевое свойство современной системы, позволяющее понимать её внутреннее состояние на основе внешних данных. Если мониторинг отвечает на вопрос "что случилось?",. . .
Четыре главных модели отношений классов в с++
russiannick 28.06.2025
Продолжаю крестовый поход против c++. ideone. com/ юзаю для проверки валидности кода. Насчитал 4 модели отношений классов: одиночный класс, равноправные классы, слейв - мастер, терминатор. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru