Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/сортировка ListBox - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сортировка ListBox (Макросы/Sub)
сортировка ListBox
grh1 Дата: Воскресенье, 19.01.2020, 17:11 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Доброго дня, уважаемые знатоки VBA!
Собрал выпадающий список из кодов найденных на просторах - есть код от Jack Famous и код от nerv, что-то убрал, что-то добавил.
В файле СОРТ1 - одна форма "обслуживает" два списка данных с разных листов.
Становишься на ячейку (С4) - выпадает один список данных, становишься на другую ячейку (С13) - выпадает другой список данных.
Всё бы хорошо, но захотелось старухе быть владычицей морской чтобы в выпадающем списке была сортировка по алфавиту.
Нашел код уважаемого nerv'a, применил в файле СОРТ2 - работает изумительно (визуально сортировка происходит именно в самом листбоксе, при этом сам список базы данных как был девственно не тронут сортировкой, так им и остался, что очень важно и нужно). Всё бы хорошо, да вот не задача - теперь в ячейках и С4 и С13 выпадает один и тот же список данных.

Как и что прописать, чтобы заработали оба списка не знаю и прошу помочь.

P.S. Файл СОРТ2 не цепляется... но код господина nerv закомментирован в файл СОРТ1
К сообщению приложен файл: 0251654.xls (74.0 Kb)


Vadym Gorokh

Сообщение отредактировал grh1 - Воскресенье, 19.01.2020, 17:17
 
Ответить
СообщениеДоброго дня, уважаемые знатоки VBA!
Собрал выпадающий список из кодов найденных на просторах - есть код от Jack Famous и код от nerv, что-то убрал, что-то добавил.
В файле СОРТ1 - одна форма "обслуживает" два списка данных с разных листов.
Становишься на ячейку (С4) - выпадает один список данных, становишься на другую ячейку (С13) - выпадает другой список данных.
Всё бы хорошо, но захотелось старухе быть владычицей морской чтобы в выпадающем списке была сортировка по алфавиту.
Нашел код уважаемого nerv'a, применил в файле СОРТ2 - работает изумительно (визуально сортировка происходит именно в самом листбоксе, при этом сам список базы данных как был девственно не тронут сортировкой, так им и остался, что очень важно и нужно). Всё бы хорошо, да вот не задача - теперь в ячейках и С4 и С13 выпадает один и тот же список данных.

Как и что прописать, чтобы заработали оба списка не знаю и прошу помочь.

P.S. Файл СОРТ2 не цепляется... но код господина nerv закомментирован в файл СОРТ1

Автор - grh1
Дата добавления - 19.01.2020 в 17:11
RAN Дата: Воскресенье, 19.01.2020, 17:20 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Любите gorokh? Его и сортируйте. :)
[vba]
Код
Private Sub UserForm_Initialize()

'ниже закоментирован код сортировки NERV'a

'Dim Arr(), i As Long, s As String, iLastRow As Long, x
'iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Arr = Worksheets("Данные").Range("A2:A89").Value
'
    On Error Resume Next
    With New Collection
        For Each x In gorokh()
            s = Trim(x)
            If Len(s) > 0 Then
                If IsEmpty(.Item(s)) Then
                    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 gorokh(1 To .Count)
        For i = 1 To .Count
            gorokh(i) = .Item(i)
        Next
    End With

    ListBoxItems.List = gorokh
    Me.TextBoxItems.SetFocus
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЛюбите gorokh? Его и сортируйте. :)
[vba]
Код
Private Sub UserForm_Initialize()

'ниже закоментирован код сортировки NERV'a

'Dim Arr(), i As Long, s As String, iLastRow As Long, x
'iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Arr = Worksheets("Данные").Range("A2:A89").Value
'
    On Error Resume Next
    With New Collection
        For Each x In gorokh()
            s = Trim(x)
            If Len(s) > 0 Then
                If IsEmpty(.Item(s)) Then
                    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 gorokh(1 To .Count)
        For i = 1 To .Count
            gorokh(i) = .Item(i)
        Next
    End With

    ListBoxItems.List = gorokh
    Me.TextBoxItems.SetFocus
End Sub
[/vba]

Автор - RAN
Дата добавления - 19.01.2020 в 17:20
grh1 Дата: Воскресенье, 19.01.2020, 17:32 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
RAN,
спасибо большое... трудно конечно бестолковым жить в селе - неделю не мог сообразить.
спасибо еще раз

закрываем тему


Vadym Gorokh
 
Ответить
СообщениеRAN,
спасибо большое... трудно конечно бестолковым жить в селе - неделю не мог сообразить.
спасибо еще раз

закрываем тему

Автор - grh1
Дата добавления - 19.01.2020 в 17:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сортировка ListBox (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!