Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2010, 16:00   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Еще раз о списках

Списки можно создать либо указав при создании "проверки" список с разделителем, или ссылку на одну строки или столбец.
Список с разделителем выглядит так: 111;222;333
Но присвоить ту же строку переменной и использовать ее для организации списка не получается.
Существует ли способ организации списков с использованием переменных в которых перечислены значения, а не ссылки на ячейки?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 26.03.2010, 16:23   #2
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Не понятен вопрос.
Вообще то список может ссылаться на диапазон ячеек (причем разный).
Попробуй так:
На любом листе в столбце А начиная с А1 введи штуки 3-5 значений.
А в ячейке, ну например С1, поставить проверку данных, список, а вместо источника запиши
Код:
=СМЕЩ(A1;;;СЧЁТЗ(A:A);1)
Теперь добавь в столбец А еще одно (два, три, ...) значения. Все они появятся в списке.
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 26.03.2010, 16:29   #3
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Существует ли способ организации списков с использованием переменных в которых перечислены значения, а не ссылки на ячейки?
Нет. Сколько пробовал, не получалось. Буду рад, если кто-нибудь меня опровергнет)
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Старый 26.03.2010, 16:36   #4
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

Цитата:
Сообщение от mchip Посмотреть сообщение
Не понятен вопрос.
Вообще то список может ссылаться на диапазон ячеек (причем разный).
Попробуй так:
На любом листе в столбце А начиная с А1 введи штуки 3-5 значений.
А в ячейке, ну например С1, поставить проверку данных, список, а вместо источника запиши
Код:
=СМЕЩ(A1;;;СЧЁТЗ(A:A);1)
Теперь добавь в столбец А еще одно (два, три, ...) значения. Все они появятся в списке.
mchip
Здесь имелось ввиду виртуальный массив. Например:
=НАИБОЛЬШИЙ(A1:A10;СТРОКА(1:10))
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Старый 26.03.2010, 16:41   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от DV68 Посмотреть сообщение
mchip
Здесь имелось ввиду виртуальный массив. Например:
=НАИБОЛЬШИЙ(A1:A10;СТРОКА(1:10))
Меня вполне бы устроил такой результат:
="11";"22";"333"
Но он не работает. :((
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 26.03.2010, 16:56   #6
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Так зачем в одну ячейку все запихивать? Формула
Код:
 СМЕЩ
как раз для этого и подходит!
В крайнем случае вот макрос:
Код:
Sub test()
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=Cells(1, 1).Value

        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Он подставляет в список значения из ячейки А1
Можно сделать все! Было бы время, да деньги...

Последний раз редактировалось mchip; 26.03.2010 в 16:58.
mchip вне форума Ответить с цитированием
Старый 26.03.2010, 17:03   #7
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Меня вполне бы устроил такой результат:
="11";"22";"333"
Но он не работает. (
В каком месте?:
Вложения
Тип файла: rar 333.rar (3.4 Кб, 11 просмотров)
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Старый 26.03.2010, 17:04   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

получилось)))
в доке написано:
тип проверки: xlValidateList
Formula1 is required, Formula2 is ignored. Formula1 must contain either a comma-delimited list of values (значения разделяются запятыми)
Вложения
Тип файла: rar Книга282.rar (8.2 Кб, 26 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.03.2010, 17:06   #9
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Списки можно создать либо указав при создании "проверки" список с разделителем, или ссылку на одну строки или столбец.
Список с разделителем выглядит так: 111;222;333
Но присвоить ту же строку переменной и использовать ее для организации списка не получается.
Если Вы в VBA хотите в список передать значения из переменной, то разделять отдельные элементы списка надо не "точка с запятой", а "запятой".
Код:
ActiveCell.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="111,222,333"
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 28.03.2010, 00:22   #10
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Если Вы в VBA хотите в список передать значения из переменной, то разделять отдельные элементы списка надо не "точка с запятой", а "запятой".
Код:
ActiveCell.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="111,222,333"
Я все испробовал...
Из екселя создаем переменную qqq со значением: ="1111,2222,3333"
Создаем в любой ячейке список и в качестве источника указываем переменную qqq. При нажатии ОК Ексель начинает злостно ругаться, что мол не нравиться источник.
С уважением, Алексей.

Последний раз редактировалось tae1980; 28.03.2010 в 00:24.
tae1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Еще раз массив Divoha Общие вопросы C/C++ 3 27.06.2009 17:49
Еще раз о списках tae1980 Microsoft Office Excel 2 23.05.2009 16:51
Еще раз о EAccessViolation. Andre1723 Общие вопросы Delphi 12 23.02.2009 01:39