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

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

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

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

Помогите с реализацией!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2012, 10:25
Ответы с готовыми решениями:

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

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

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

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

33
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.08.2012, 10:35 2
Запишите в макрос создание выпадающего списка, перенесите в свою программу.
Исправьте разделитель списка на запятую, например
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  [ТС] 3
А можно не много поподробнее! А то не совсем понятно...
0
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.08.2012, 11:39 4
Что именно непонятно? F1 - запись макроса...
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37144 / 20590 / 4253
Регистрация: 12.02.2012
Сообщений: 33,951
Записей в блоге: 14
31.08.2012, 16:22 5
Цитата Сообщение от matresh Посмотреть сообщение
не много поподробнее
- т.е. "короче"?
0
161 / 17 / 2
Регистрация: 14.07.2011
Сообщений: 74
31.08.2012, 17:31  [ТС] 6
Вы не могли подсказать, что означает каждая функция?!
0
13 / 13 / 2
Регистрация: 07.04.2010
Сообщений: 74
31.08.2012, 17:45 7
Ексель дает возможность задать возможные значения ячейки. Дальше либо выбрать из списка либо ввести вручную, но только из списка!
Красиво разжевано на
 Комментарий модератора 
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
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.08.2012, 17:54 8
Цитата Сообщение от matresh Посмотреть сообщение
Вы не могли подсказать, что означает каждая функция?!
Мог бы. Но только за большие деньги
Вы можете сами найти ответы: в редакторе VBA поставьте курсор в слово например With и нажмите F1. Если с аглицким туго, найдите в инете справку по VBA для Офис-97 на русском. Ну или скачайте литературу по VBA: Учебники, справочники, самоучители
0
13 / 13 / 2
Регистрация: 07.04.2010
Сообщений: 74
31.08.2012, 18:04 9
Эта конструкция задает параметры функции проверки значений, пишется одной строчкой: 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
Formanter
31.08.2012, 18:14
  #10

Не по теме:

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

0
Казанский
31.08.2012, 18:31
  #11

Не по теме:

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

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

Не по теме:

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

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

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

Конечно есть вариант написать массив на скрытый лист, потом сослаться в формуле на диапозон.
Но хочется без лишнего веса обойтись, компы тормозные. Реально сделать???
0
6082 / 1326 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
26.06.2013, 12:20 16
Здравствуйте, @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
6930 / 2838 / 545
Регистрация: 19.10.2012
Сообщений: 8,670
26.06.2013, 13:00 17
Если строка получится длиннее 255 - то при открытии сохранённого xlsm с такой проверкой будет ругань.
xlsb терпеливее - но пределы не изучал.
0
0 / 0 / 0
Регистрация: 26.06.2013
Сообщений: 5
26.06.2013, 13:44 18
Не получается так((( ругается... Ну ладно.. сделала уже с листом.. Надо скорее просто.... Но если метод найдётся буду очень рада!!! Так как часто требуется!
0
0 / 0 / 0
Регистрация: 26.06.2013
Сообщений: 5
27.06.2013, 15:58 19
Ребят, а может мне кто-нибудь подскажет вариант реализации? Задача у меня такая: есть файл с адресами: Город, Улица, Дом - это столбцы. Файл для каждого региона свой, и он динамичный лежит в общем справочнике. Мы работаем с другим файлом, в который вставляется нужный листик, в зависимости от того, какой регион его открывает. Это я написала. Так вот... теперь надо, чтобы на другом листочке в столбцах Город/улица/дом, выходили выпадающие списки, причём для определённого города, только его улицы, а для улиц дома... При этом не должно быть пустых и улицы уникальны.

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

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

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

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

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

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


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

Заранее спасибо
0
6930 / 2838 / 545
Регистрация: 19.10.2012
Сообщений: 8,670
27.06.2013, 17:09 20
Feel, есть другой вариант макросом - на словаре словарей.
Делал. Но ограничение см.выше. Выкрутился удалением такого списка при закрытии файла, и созданием заново при открытии.
На листе только исходная база данных для списков.
И никаких имён.
0
27.06.2013, 17:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2013, 17:09
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru