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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2010, 12:33   #1
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
По умолчанию Внести уникальное значение в Комбобокс.

Всем доброго здравия! Помогите пожалуйста доработать код. Вносятся значения в комбобокс5, как сделать их уникальными то есть без повторений.
Код:
Private Sub ComboBox3_Click()
   ComboBox5.Clear

    N = 0
    While Worksheets(3).Cells(N + 2, 3).Value <> ""
        N = N + 1
    Wend
    For i = 1 To N
        If ComboBox3.Text = Worksheets(3).Cells(i + 1, 3).Value And ComboBox2.Text = Worksheets(3).Cells(i + 1, 2).Value Then
            
            ComboBox5.AddItem Worksheets(3).Cells(i + 1, 4).Value
        End If
    Next

End Sub
Заранее Спасибо.
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Старый 22.03.2010, 12:48   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Попробуйте так:
Код:
Private Sub ComboBox3_Click()
    Dim i As Long, x As New Collection: ComboBox5.Clear
    With Sheets(3)
    For i = 2 To .Cells(Rows.Count, 3).End(xlUp).Row
        If .Cells(i, 3) <> "" Then
            If ComboBox3.Text = .Cells(i + 1, 3) Then
                If ComboBox2.Text = .Cells(i + 1, 2) Then
                    On Error Resume Next
                    x.Add .Cells(i + 1, 4), CStr(.Cells(i + 1, 4))
                    If Err = 0 Then ComboBox5.AddItem .Cells(i + 1, 4) Else On Error GoTo 0
    End If: End If: End If: Next: End With
End Sub
Примечание: Вложенные операторы If будут выполняться быстрее, чем один If с несколькими условиями (And, Or и т.п.), т.к. в последнем случае, проверяются (вычисляются) все условия, не зависимо от того, выполняется какое-нибудь из них, или нет.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 22.03.2010, 13:12   #3
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
По умолчанию

Спасибо SAS888! Работает. Только немного трудновато читать ваш код, для меня он немного замудрёный, но да ладно, главное идёт. Спасибо ещё раз.
Нашёл в инете такой вариант, только не понял как его можно приспособить, что Вы думаете про этот способ?
Можно использовать свойство MatchFound
Код:
ComboBox1.Style = fmStyleDropDownCombo 
For i = 1 To 25 
    ComboBox1.Text = Cells(i, 2) 
    If ComboBox1.MatchFound = False Then ComboBox1.AddItem Cells(i, 2) 
Next 
ComboBox1.Text = "" 
ComboBox1.Style = fmStyleDropDownList 'Если нужно заблокировать ручной ввод
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Старый 23.03.2010, 06:10   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно и так. Все зависит от конкретной задачи. После закрытия формы значения, внесенные в ComboBox теряются, а созданную коллекцию уникальных значений можно использовать (если, конечно, это нужно).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 23.03.2010, 10:53   #5
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
По умолчанию

Спасибо за разъяснения, просто мне показался этот код немного по проще. В принципе задача решена, за что Вам спасибо.
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Проблема]Alphaskins: изменение темы приложения через комбобокс.. Человек_Борща Компоненты Delphi 4 15.02.2010 18:45
Внести в БД значения из Memo Филлип БД в Delphi 2 23.11.2008 11:38
Как найти уникальное число для символьной строки? Paul Hindenburg Общие вопросы Delphi 13 14.02.2008 10:00
Комбобокс deadh5n1 Помощь студентам 1 11.12.2007 08:12
Внести в бд Антон Шестаков БД в Delphi 2 14.05.2007 09:30