Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Заполнение ListBox2 неповторяющимися из элементами Добавлено: 06.03.07 09:17  

Автор вопроса:  khall
Из списка ListBox1 выбранные элементы переносятся в список ListBox2 с помощью кнопки AddButton (Добавить). При этом свойство MultiSelect списка ListBox1 = fmMultiSelectExtended (хотя конечно можно и fmMultiSelectMulti).

Как сделать так, чтобы в список ListBox2 вносились только неповторяющиеся элементы из списка ListBox1?


Option Explicit
Dim i As Integer
Dim j As Integer

Private Sub AddButton_Click()

    For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) Then
        For j = 0 To ListBox1.ColumnCount - 1
            ListBox2.AddItem ListBox1.List(i, j)
        Next j
        End If
    Next i
End Sub


Private Sub DeleteAllButton_Click()

    ListBox2.Clear
End Sub

Private Sub DeleteButton_Click()

    If ListBox2.ListIndex = -1 Then Exit Sub
    ListBox2.RemoveItem ListBox2.ListIndex
End Sub

Private Sub CancelButton_Click()

    Unload Me
End Sub

Private Sub OKButton_Click()

    MsgBox "Список содержит " & ListBox2.ListCount & " элемента/-ов."
    Unload Me
End Sub

Private Sub UserForm_Initialize()

    ListBox1.MultiSelect = fmMultiSelectExtended
End Sub

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 bi-lya



Вопросов: 1
Ответов: 125
 Профиль | | #1 Добавлено: 06.03.07 16:39
Нужно вставить проверку на наличие подобного содержимого перед вставкой очередной строки, т.е. сравнивать очередную вставляемую строку ListBox1 с уже существующими в ListBox2
А вообще-то не совсем понятно:
1. "...неповторяющиеся элементы из списка ListBox1..." - должно только одно из повторяющихся значений вноситься или повторяющиеся должны игнорироваться вообще
2.
ListBox2.AddItem ListBox1.List(i, j)
- у вас в ListBox2 несколько колонок?

Ответить

Номер ответа: 2
Автор ответа:
 khall



Вопросов: 2
Ответов: 6
 Профиль | | #2 Добавлено: 06.03.07 16:58
В ListBox2 только одна колонка. А носить в ListBox2 нужно только те данные из ListBox1, которых нет в ListBox2. Спасибо.

Ответить

Номер ответа: 3
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #3
Добавлено: 06.03.07 22:29
А в listbox создаютса колонки? я думал только в ListView.

Ответить

Номер ответа: 4
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #4
Добавлено: 06.03.07 22:30
Проверил не создаютса

Ответить

Номер ответа: 5
Автор ответа:
 bi-lya



Вопросов: 1
Ответов: 125
 Профиль | | #5 Добавлено: 07.03.07 02:11
khall, держите готовый
Private Sub AddButton_Click()
Dim i As Integer
Dim j As Integer
Dim Flag As Boolean
Dim Stroka1, Stroka2 As String
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then
        Stroka1 = ListBox1.List(i)
        If ListBox2.ListCount <> 0 Then
            Flag = False
            For j = 0 To ListBox2.ListCount - 1
                Stroka2 = ListBox2.List(j)
                If Stroka1 = Stroka2 Then
                    Flag = True
                End If
            Next j
            If Flag = False Then ListBox2.AddItem ListBox1.List(i)
        Else
            ListBox2.AddItem ListBox1.List(i)
        End If
        
    End If
Next i
End Sub

Docal, все есть. Поставте ColumnHeads=True и назначте ColumnCount ;)

Ответить

Номер ответа: 6
Автор ответа:
 bi-lya



Вопросов: 1
Ответов: 125
 Профиль | | #6 Добавлено: 07.03.07 02:57
Docal, хороший пример в Справке VBA. Смотрите пример к Column Property(Forms)

Ответить

Номер ответа: 7
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 07.03.07 09:52
Проверил не создаютса
Колонки и столбцы разные весчи

Ответить

Номер ответа: 8
Автор ответа:
 khall



Вопросов: 2
Ответов: 6
 Профиль | | #8 Добавлено: 07.03.07 10:45
Спасибо!
Можно еще и таким образом:

Option Explicit
Dim i As Integer
Dim j As Integer
Dim fl As Integer

Private Sub AddButton_Click()

    For i = 0 To Me.ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
      fl = True
      For j = 0 To Me.ListBox2.ListCount - 1
        If ListBox1.List(i) = ListBox2.List(j)
Then fl = False
      Next j
      If fl Then
        ListBox2.AddItem ListBox1.List(i)
      End If
    End If
    Next i
    
End Sub

Ответить

Номер ответа: 9
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #9
Добавлено: 07.03.07 16:13
Действительно
    ;Doc

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам