Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Combobox и filter / 3 сообщений из 3, страница 1 из 1
27.06.2006, 15:04:54
    #33817048
Pr0teus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox и filter
Есть лист в excel документе. В нем есть колонка заполненная значениями (назавания компаний - ООО "Трест 5",ООО "Речком" и т.д.), количество строк не постоянно, т.к. вводятся новые записи. Есть форма с выпадающим combobox'ом. Так вот, как сделать, чтобы в выпадающем списке combobox'а были значения из этой колонки с названиями и при этом они не повторялись, т.е. присутствовали только один раз. Это необходимо для удобства ввода. При этом таких колонок кроме названий компаний несколько и хотелось бы и для них сделать такую вещь.
...
Рейтинг: 0 / 0
28.06.2006, 11:19:09
    #33818688
Taranaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox и filter
1. На основании данных колонок со значениями делаем сводную таблицу в отдельном листе.
2. Выводим в заголовках строк сводной таблицы значение для выбора (в Вашем случае название компании)
3. На событие изменения листа с колонками вешаем обновление сводной таблицы
4. Говорим комбобоху диапазон из которого тянуть данные.
...
Рейтинг: 0 / 0
28.06.2006, 11:31:58
    #33818737
Pr0teus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox и filter
Я лично сделал так, вроде нормально отрабатывает. Но только одно "но", - "Как откатить сделанные изменения, если вдруг оператор заметил, что он ошибся?"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
Private Sub UserForm_Initialize()
 
    Dim MyUniqueList As Variant, i As Long
    
    Dim strRow As String, strActiveRow As String

    strRow = Trim(Str(ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row))
    strActiveRow = Trim(Str(ActiveCell.Row))

    Me.ComboBox1.ControlSource = "A" + strActiveRow

    With Me.ComboBox1
        .Clear
        MyUniqueList = UniqueItemList(Range("A8:A" + strRow), True)
        For i =  1  To UBound(MyUniqueList)
            .AddItem MyUniqueList(i)
        Next i
    End With

End Sub



Private Function UniqueItemList(InputRange As Range, HorizontalList As Boolean) As Variant
  
    Dim cl As Range, cUnique As New Collection, i As Long, uList() As Variant
    Application.Volatile
    
    On Error Resume Next
    For Each cl In InputRange
        If cl.Formula <> "" Then
            cUnique.Add cl.Value, CStr(cl.Value)
        End If
    Next cl
   
    UniqueItemList = ""
    If cUnique.Count >  0  Then
        ReDim uList( 1  To cUnique.Count)
        For i =  1  To cUnique.Count
            uList(i) = cUnique(i)
        Next i
        UniqueItemList = uList
        If Not HorizontalList Then
            UniqueItemList = Application.WorksheetFunction.Transpose(UniqueItemList)
        End If
    End If
    On Error GoTo  0 

End Function

...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Combobox и filter / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]