Страницы: 1
RSS
Ограничения на выпадающий список Validation.Formula1 в Excel 2010
 
Столкнулся тут с одной проблемой - никак не мог отловить ошибку в установке Validation на ячейку через VBA.
В двух случаях добавлял валидацию в одну и ту же ячейку через Join(Array, "," ;)  . В одном случае срабатывает, в другом - нет, хоть тресни.
В Validation нужно было занести около 1000 строк в обоих случаях (не спрашивайте, зачем  :)  )

Вычитал где-то, что в 2007 или 2003 (не помню) ограничение на количество строк в выпадающем списке было 32767 - но у меня и близко столько не было. Подумал, что у меня в строках встречаются запятые, наверное, они мешают и получается очень много строк. Взял каждый элемент в кавычки, опять Join - и не работает.
Затем вычитал, что в какой-то из прежних версий длина строки Formula1 имеет ограничение 255 символов. Но это значение превышалось без проблем. Тут родилась идея проверить, есть ли такое ограничение и какое оно.

В итоге:
Для Formula1, сформированной, например, посредством Join(Array, "," ;)  , ограничение длины итоговой строки составляет 16383 символа
Если Formula1 задается через, например, "=A1:Axxx", максимальное значение xxx - 65533

Может, кому-нибудь пригодится  :)
Изменено: Максим Зеленский - 12.08.2014 16:26:17
F1 творит чудеса
 
Совсем недавно столкнулся с этой проблемой - создавал программно выпадающий список при помощи Join(Array, ",")
На небольших количествах всё работало, а при больших, при открытии файла ругань и удаление выпадающих списков (всех). Сам не смог разобраться, помог ZVI - ограничение на длину формулы = 255 символов. Пришлось идти обходным путём: сначала на листе заполнять именованный диапазон, а затем уже его в выпадающий.
 
Подтверждаю - во всех версиях ограничение на длину строки в формуле вып.списка 255 символов. Никак не обойти.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Длина именно формулы, т.е. если условие представляет собой рассчитываемую формулу? тогда понятно, как я его обошел - у меня же не рассчитываемая формула была, а список констант.
Т.е., если строка для Formula1 начинается с =, будет действовать это ограничение, а не 16383, правильно?
F1 творит чудеса
 
Причём, список создавался и работал, но при открытии файла Excel удалял все имеющиеся выпадающие списки.
 
Тоже помню сталкивался.
Обошёл кажется так - перед закрытием файла сам убивал все списки (иначе ругань при открытии), а при открытии макросом создавал их заново.
Но лучше конечно ориентировать на диапазон.
 
Игорь, беда у меня была в том, что большая часть выпадающих была создана стандартным способом. Вот они и удалялись...
 
ммм.. то есть, если я запихну в строку все свои 16383 символа, то она обрежется? и/или просто выдаст ошибку и всё поудаляет? надо проверить
F1 творит чудеса
 
Цитата
Максим Зеленский пишет:
Длина именно формулы, т.е. если условие представляет собой рассчитываемую формулу?
Нет. Для списков есть аргумент такой - Formula1. Неважно что Вы туда записываете - список перечисления одной строкой или вычисляемую формулу - длина не должна превышать 255 символов.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Максим, я не проверял относительно обрезания :-), но при ОТКРЫТИИ книги удалялись ВСЕ имеющиеся на листе списки,
Страницы: 1
Читают тему
Loading...