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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2010, 13:13   #1
ondar
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 10
По умолчанию повторяющиеся значения в combobox

Заполняю таблицу в Excel при помощи VBA-приложения.
Из textbox-a и combobox-а данные нормально заносятся в таблицу на первом листе.
Не могу исключить повторяющиеся значения в combobox-е!!!
Значения я получаю из столбца второго листа.
Я, вообще-то, с VBA никак не встречался до вчерашнего дня.
И программирую на других языках - pascal/delphi, с++, php.
Изображения
Тип файла: jpg VBA+Excel.jpg (16.8 Кб, 136 просмотров)
Вложения
Тип файла: zip VBA+EXCEL.zip (16.4 Кб, 16 просмотров)
ondar вне форума Ответить с цитированием
Старый 07.10.2010, 13:16   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Посмотрите здесь:
Как удалить все повторяющиеся элементы списка ListBox, ComboBox ?
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 07.10.2010, 13:37   #3
ondar
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 10
По умолчанию

ладно, разберёмся!
Но вопрос пока не закрыт.
Ведь интересно же, как другие люди находят решение.
ondar вне форума Ответить с цитированием
Старый 07.10.2010, 13:47   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Так вот так и находят))
Цитата:
Для того, чтобы удалить все повторяющиеся элементы списка и в результате получить список, содержащий только уникальные значения, достаточно воспользоваться процедурой UniqueItems
Код:
Private Sub UniqueItems()
    With Me.ComboBox1 'ListBox1
         iMassiv = .List
         For iCount& = .ListCount - 1 To 0 Step -1
             If iCount& <> Application.Match(iMassiv( _
             iCount&, 0), iMassiv, 0) - 1 Then .RemoveItem iCount&
         Next
    End With
End Sub
Цитата:
Комментарий : Подобный подход применим только к тем элементам управления (ComboBox/ListBox), которые заполнялись с помощью свойства List или Column
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 07.10.2010, 17:32   #5
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

посмотрите это подойдет
' ZVI:2009-10-17 http://www.planetaexcel.ru/forum.php?thread_id=10602
' Функция возвращает одномерный массив уникальных отсортированных значений диапазона Rng
Function NoDups(Rng As Range)
Dim Arr(), i&, s$, x
' Считать данные в массив, для удобства ограничиться последней строкой данных листа
Arr = Intersect(Rng.Parent.UsedRange, Rng).Value
' Создать список
On Error Resume Next
With New Collection
For Each x In Arr()
s = Trim(x)
If Len(s) > 0 Then
If IsEmpty(.Item(s)) Then
' Оригинальный достаточно быстрый вариант добавления значения в коллекцию с сортировкой (from PGC01)
For i = 1 To .Count
If s < .Item(i) Then Exit For
Next
If i > .Count Then .Add s, s Else .Add s, s, Before:=i
End If
End If
Next
' Скопировать из коллекции в массив
ReDim Arr(1 To .Count)
For i = 1 To .Count
Arr(i) = .Item(i)
Next
End With
' Вернуть массив
NoDups = Arr()
End Function
Sub nodups_next()
Dim Rng As Range
Set Rng = Sheet1.Columns(1) ' <- чтобы не париться, можно задать весь столбец, NoDups ограничит его по UsedRange
ListBox1.List = NoDups(Rng)
ComboBox1.List = ListBox1.List ' или ComboBox1.List = NoDups(Rng)
Label1.Caption = "Всего элементов: " & WorksheetFunction.CountA(Rng)
Label2.Caption = "Уникальных элементов: " & ListBox1.ListCount
End Sub
Вложения
Тип файла: zip Дежурство.zip (16.8 Кб, 44 просмотров)
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 07.10.2010 в 17:52.
R Dmitry вне форума Ответить с цитированием
Старый 07.10.2010, 17:47   #6
ondar
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 10
По умолчанию

Спасибо за информацию!
Вроде разобрался.
ondar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа, которая находит в массиве значения, повторяющиеся два и более раз yugik Общие вопросы C/C++ 6 08.03.2013 18:14
Помоги написать формулу, чтобы выявить и удалить повторяющиеся значения Nina_7 Microsoft Office Excel 12 26.01.2011 14:53
Повторяющиеся значения в Excel shumares Microsoft Office Excel 2 07.02.2010 14:53
Повторяющиеся значения iid2007 Microsoft Office Access 2 16.09.2008 05:54
Повторяющиеся значения в БД. cpGrey БД в Delphi 4 29.01.2008 18:32