Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 11
1

Как удалить одинаковые значения в Combobox

17.09.2012, 13:36. Показов 6684. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Combobox наполняется значениями из столбца в котором перечисляются города

Visual Basic
1
2
3
4
5
6
7
N = 2
While N <> 530
      N = N + 1
Wend
    For i = 2 To N + 1
    UserForm1.ComboBox1.AddItem Worksheets("Контрагенты").Cells(i, 3).Value
    Next i
как сделать что бы добавлялось не все города а только те которых еще нет в списке ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2012, 13:36
Ответы с готовыми решениями:

Как удалить одинаковые значения из List?
Вот допустим есть 2 List в одном значения 1 3 5 7 а во втором 8 7 6 5 , нужно чтоб после действия...

Как сверить 2 массивы и удалить одинаковые значения?
Предположим есть массив есть массив $a = и есть второй массив $b = Как из массива b удалить...

Как удалить значения из ComboBox, привязанного к текстовому файлу?
Значения в combobox берет из файл .txt , как сделать что бы можно было удалить их и из сомбобокс и...

Одинаковые значения в двух combobox на разных формах
Здраствуйте! Есть две формы на каждой из них по combobox comboBox1.ValueMember =...

12
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,518
17.09.2012, 13:45 2
Прежде, чем поместить в ComboBox данные, нужно просмотреть все элементы ComboBox.
0
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 11
17.09.2012, 13:50  [ТС] 3
на момент добавления комбо пустой !
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,518
17.09.2012, 14:18 4
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Макрос1()
Dim i As Long
For i = 2 To 100
    If Range("A2:A" & i - 1).Find(What:=Cells(i, 1), LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:= _
        False, SearchFormat:=False) Is Nothing Then
    
        'Добавляем в ComboBox запись.
        
    End If
Next i
End Sub
0
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 11
17.09.2012, 14:34  [ТС] 5
этот код уместен если есть фильтрация , а как быть если её нет , и допустим по условиям невозможна ???
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,518
17.09.2012, 14:35 6
я принцип написал
0
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 11
17.09.2012, 14:41  [ТС] 7
я понял , спасибо большое , просто не могу в толк взять как проверять не построчно а в целом
Может удалять значения только после того как они уже были добавлены в combo ? типа -
Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim PrevIndex As Long 'èíäåêñ â êîìáîáîêñ íà ïîñëåäíèé íåóäàëåííûé ýëåìåíò
PrevIndex = ComboBox1.ListCount - 1
For b = ComboBox1.ListCount - 2 To 0 Step -1
    If ComboBox1.List(b) = ComboBox1.List(PrevIndex) Then
        ComboBox1.RemoveItem b 'ñîâïàäàåò ñ ïðåäûäóùèì, óäàëèòü.
        PrevIndex = PrevIndex - 1 'Ïîñëå óäàëåíèÿ ýëåìåíò ñìåñòèëñÿ ââåðõ, íàäî îáíîâèòü óêàçàòåëü
    Else
PrevIndex = b 'Íå ñîâïàäàåò ñ ïðåäûäóùèì. Îí ñòàíåò íîâûì ïðåäûäóùèì.
    End If
Next b
но он тоже идет последовательно и без фильтра не годится
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,518
17.09.2012, 14:46 8
сортировка нужна тогда
0
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
18.09.2012, 06:04 9
Visual Basic
1
2
3
4
5
6
7
8
Public Sub www()
    Dim a, i&
    a = [a1].CurrentRegion.Columns(1)
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(a): .Item(a(i, 1)) = "": Next
        ComboBox1.List = .keys
    End With
End Sub
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
18.09.2012, 10:19 10
Можно и без привлечения посторонних библиотек:

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Add_Item(Cmb as ComboBox, Ite As String)
      n%=Cmb.Listcount
      for i%=0 to n%-1
          If Cmb.List(i%)=Ite then
             q%=-1
             Exit for
          end if
      Next i%
      if q%=0 then Cmb.Additem Ite
End Sub
Эта процедура будет добавлять уникальные элементы в combobox.
0
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
18.09.2012, 12:38 11
Можно. Но сколько раз она запустится при добавлении 1000 значений? А уж сколько ее внутренний цикл будет молотить... А моя отработает один раз и очень быстро.
Цитата Сообщение от shirikalov Посмотреть сообщение
на момент добавления комбо пустой !
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
18.09.2012, 15:33 12
Цитата Сообщение от kuklp Посмотреть сообщение
1000 значений
- покажите мне такой combo... По-моему, combo c 1000 значений - это... легкое отклонение от разумного. А для combo c несколькими десятками разница в скорости будет несущественна.
0
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
18.09.2012, 22:30 13
Все верно. Но уникальных и в 100000 записей м.б. десяток.:-)

Catstail, Ваш макрос тоже можно сделать без цикла:-)
Visual Basic
1
2
3
4
5
Sub Add_Item(Cmb As ComboBox, Ite As String)
    On Error Resume Next
    a& = Application.VLookup(Ite, Cmb.List, 1, 0)
    If Err Then Cmb.AddItem Ite
End Sub
2
18.09.2012, 22:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2012, 22:30
Помогаю со студенческими работами здесь

Удалить пары соседних элементов, имеющих одинаковые значения, и вывести размер полученного массива и значения
Задан размера массива целых чисел и значения его элементов.Удалить пары соседних элементов, имеющих...

Как при выборе значения в comboBox удалить всю строку в Excel?
Уже несколько дней думаю, никак ничего не приходит в голову. Я сделал функцию, которая добавляет в...

Как сравнить значения ComboBox и листа ячейки, если одинаковые вывод сообщения, если разные сравнить с ячейкой ниже
Добрый день. Как сравнить значения ComboBox и значения ячейки на листе, если одинаковые вывод...

Удалить элементы массива, имеющие одинаковые значения
Помогите дописать программу, я составил примерно, но плохо в этом всем понимаю. Удалить элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru