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

Вход

Регистрация

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

 

= Мир MS Excel/Сортировка по критерию из listbox - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка по критерию из listbox (Макросы/Sub)
Сортировка по критерию из listbox
F4rion Дата: Пятница, 24.04.2020, 11:12 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, проблема такая, что при выборе в listbox любой из критериев по которому нужно сделать сортировку, он сортирует одно и то же.
[vba]
Код
Private Sub CmdCancel_Click()
' Выбрать диапазон для сортировки
    Range("A1:F7").Select
    ' Задать условие для сортировки данных: Столбец N пп сортировать по возрастанию
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
    ' Сбросить переключатели
    tglOrder1.Value = False:    tglOrder2.Value = False
End Sub
Private Sub CmdSort_Click()
' Параметры сортировки
    Dim sColumn1 As Integer, sColumn2 As Integer, sOrder1 As Integer, sOrder2 As Integer
    ' Выбрать колонки для сортировки
    sColumn1 = lstParam1.ListIndex + 2: sColumn2 = lstParam2.ListIndex + 2
    ' Выбрать порядок сортировки
    If tglOrder1.Value = True Then sOrder1 = xlDescending Else sOrder1 = xlAscending
    If tglOrder2.Value = True Then sOrder2 = xlDescending Else sOrder2 = xlAscending
    ' Выбрать диапазон для сортировки
    Range("A1:F7").Select
    ' Задать условия для сортировки данных: Не включать заголовок в список сортировки
    Selection.Sort Key1:=Cells(2, sColumn1), Order1:=sOrder1, _
                   Key2:=Cells(2, sColumn2), Order2:=sOrder2, _
                   Header:=xlYes

End Sub
Private Sub tglOrder1_Click()
' Меняем надпись на кнопке переключателя на противоположную
    If tglOrder1.Value = False Then
       tglOrder1.Caption = "По возрастающей"
    Else
       tglOrder1.Caption = "По убывающей"
    End If
End Sub
Private Sub tglOrder2_Click()
' Меняем надпись на кнопке переключателя на противоположную
    If tglOrder2.Value = False Then
       tglOrder2.Caption = "По возрастающей"
    Else
       tglOrder2.Caption = "По убывающей"
    End If
End Sub
[/vba]

Код для книги:
[vba]
Код
Private Sub Workbook_Open()
' Инициализируем Список параметров 1
If Worksheets(1).lstParam1.ListCount = 0 Then
    Worksheets(1).lstParam1.List = Array("Модель процессора", "Частота", "Тепловыделение", "Кэш", "стоимость")
    Worksheets(1).lstParam1.ListIndex = 0
End If
' Инициализируем Список параметров 2
If Worksheets(1).lstParam2.ListCount = 0 Then
    Worksheets(1).lstParam2.List = Array("Модель процессора", "Частота", "Тепловыделение", "Кэш", "стоимость")
    Worksheets(1).lstParam2.ListIndex = 0
End If
End Sub
[/vba]
 
Ответить
СообщениеДобрый день, проблема такая, что при выборе в listbox любой из критериев по которому нужно сделать сортировку, он сортирует одно и то же.
[vba]
Код
Private Sub CmdCancel_Click()
' Выбрать диапазон для сортировки
    Range("A1:F7").Select
    ' Задать условие для сортировки данных: Столбец N пп сортировать по возрастанию
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
    ' Сбросить переключатели
    tglOrder1.Value = False:    tglOrder2.Value = False
End Sub
Private Sub CmdSort_Click()
' Параметры сортировки
    Dim sColumn1 As Integer, sColumn2 As Integer, sOrder1 As Integer, sOrder2 As Integer
    ' Выбрать колонки для сортировки
    sColumn1 = lstParam1.ListIndex + 2: sColumn2 = lstParam2.ListIndex + 2
    ' Выбрать порядок сортировки
    If tglOrder1.Value = True Then sOrder1 = xlDescending Else sOrder1 = xlAscending
    If tglOrder2.Value = True Then sOrder2 = xlDescending Else sOrder2 = xlAscending
    ' Выбрать диапазон для сортировки
    Range("A1:F7").Select
    ' Задать условия для сортировки данных: Не включать заголовок в список сортировки
    Selection.Sort Key1:=Cells(2, sColumn1), Order1:=sOrder1, _
                   Key2:=Cells(2, sColumn2), Order2:=sOrder2, _
                   Header:=xlYes

End Sub
Private Sub tglOrder1_Click()
' Меняем надпись на кнопке переключателя на противоположную
    If tglOrder1.Value = False Then
       tglOrder1.Caption = "По возрастающей"
    Else
       tglOrder1.Caption = "По убывающей"
    End If
End Sub
Private Sub tglOrder2_Click()
' Меняем надпись на кнопке переключателя на противоположную
    If tglOrder2.Value = False Then
       tglOrder2.Caption = "По возрастающей"
    Else
       tglOrder2.Caption = "По убывающей"
    End If
End Sub
[/vba]

Код для книги:
[vba]
Код
Private Sub Workbook_Open()
' Инициализируем Список параметров 1
If Worksheets(1).lstParam1.ListCount = 0 Then
    Worksheets(1).lstParam1.List = Array("Модель процессора", "Частота", "Тепловыделение", "Кэш", "стоимость")
    Worksheets(1).lstParam1.ListIndex = 0
End If
' Инициализируем Список параметров 2
If Worksheets(1).lstParam2.ListCount = 0 Then
    Worksheets(1).lstParam2.List = Array("Модель процессора", "Частота", "Тепловыделение", "Кэш", "стоимость")
    Worksheets(1).lstParam2.ListIndex = 0
End If
End Sub
[/vba]

Автор - F4rion
Дата добавления - 24.04.2020 в 11:12
_Boroda_ Дата: Пятница, 24.04.2020, 17:04 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
- Прочитайте Правила форума
- Приложите файл в формате Excel размером до 500кб согласно п.3 Правил форума


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение- Прочитайте Правила форума
- Приложите файл в формате Excel размером до 500кб согласно п.3 Правил форума

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

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