Dim dc As New Scripting.Dictionary
For Each o In ar
If Len(o) > 0 And Not dc.Exists(o) Then dc.Add o, o '<-- добавляем в DC
If dc.Count > 10001 Then
MsgBox "Для фильтра по этой колонке через выпадающий список" & vbCrLf & _
"превышен лимит здравого смысла (записей больше 10000)." & vbCrLf & vbCrLf & _
"Воспользуйтесь способом -" & vbCrLf & _
"через контекстное меню 'Фильтр по выделенному'", , "Внимание"
Exit For
End If
Next
On Error GoTo err123
S = ""
If dc.Count < 10001 Then S = Join(dc.Items, "|") '<-- формируем строку для см. ниже
.ColComboList(Col) = clrCrLfTab(shFilter & IIf(S = "", "", S))
|