Страницы: 1
RSS
Как обойти ограничение кол-ва символов в выпадающем списке?
 
В приведенном примере создается выпадающий список в ячейке из значений массива (№1). Полученный список имеет ограничения на кол-во символов, т.е. не все значения из массива туда записываются. При этом, используя способы №2 и №3 с ссылками на диапазон ячеек, создается список без ограничений.
Вопрос: Можно ли обойти ето и использовать переменную для создания списка с неограниченным кол-вом символов?

Код
Sub Primer()
   
   Dim X As Variant
   With Cells(1).CurrentRegion.Columns(1)
     X = Filter(.Parent.Evaluate("TRANSPOSE(IF(COUNTIF(OFFSET(" & .Address & ",0,0,ROW(1:" & .Rows.Count & _
     "))," & .Address & ")=1," & .Address & ",CHAR(126)))"), "~", 0)
   End With
   With Sheets("Лист1").Range("B1").Validation
            .Delete
            '№1
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(X, ",")
            '№2                               
'            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$A$1:$A$" & UBound(X)
            '№3
'            .Add type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=INDIRECT(""$A$1:$A$100"")"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
   End With

End Sub
 
Наверное, нужно количество значений в списке, а не количество символов?
Запустил макрос с вариантом №1, в списке все значения от 1 д 100.
 
Да, была такая штука - при открытии файла выпадала ошибка при наличии такого списка. Я обходил так - до сохранения (или при закрытии) список убивал, при открытии (по факту после) создавал.
 
Цитата
vikttur написал:
Наверное, нужно количество значений в списке, а не количество символов?

Если каждое значение из списка будет состоять из бОльшего кол-ва символов, то и само кол-во значений в списке будет меньшим. Вроде так. Суть, чтобы вообще это ограничение обойти.
 
У меня этот макрос создаёт список из 100 значений. Но после сохранения файла он открывается с ошибкой и список пропадает вообще. Но его можно снова создать этим макросом.
Изменено: Hugo - 13.02.2020 16:48:21
 
У меня (Excel 2003) создается и открывается без ошибок (и после открытия закрытия файла тоже). Но значений 88 из 100.
 
Да, я видел изначально 88 записей. Создал 100, сохранил с другим именем, закрыл. При открытии - ошибка. спиок пустой. Создал заново. Эксель 2010 х32
P.S. повторил, но имя не менял. При открытии ошибки нет, но и списка тоже... Но создаётся 100 записей.
Изменено: Hugo - 13.02.2020 17:01:09
 
Кстати в ComboBox UserForm'а у меня этот массив передается целиком, почему при передаче в ячейку он "обрезается" - непонятно...
 
Там есть ограничение на длину строки (что в коде создаётся из массива).
 
Цитата
dilon написал: Суть, чтобы вообще это ограничение обойти.
Какое? Вы пишете о количестве символов. Игорь о ругом:
Цитата
Hugo написал: У меня этот макрос создаёт список из 100 значений.

Цитата
dilon написал: Если каждое значение из списка будет состоять из бОльшего кол-ва символов, то и само кол-во значений в списке будет меньшим
Есть такая взаимосвязь?!
 
Да. Если будет два значения, сумма символов которых с разделителем превышает 256 - то уже будет ошибка.
В этом примере максимум - числа 0-88.
Изменено: Hugo - 13.02.2020 17:50:41
 
Понял... Значения же записываются в условие проверки данных. Об этом не подумал.
Страницы: 1
Наверх