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

Вход

Регистрация

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

 

= Мир MS Excel/Выпадающий список с сортировкой без повторов - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выпадающий список с сортировкой без повторов (Макросы/Sub)
Выпадающий список с сортировкой без повторов
kirill-kibor Дата: Воскресенье, 17.04.2016, 00:59 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
[offtop]Не могу больше руками...[/offtop]
[offtop]Начал сам, но чувствую - не то что-то делаю (в файле видно) [/offtop]
Здравствуйте! Помогите пожалуйста сделать следующее, если можно, то с комментариями (планирую поразбираться):
1. В выпадающих списках "ВОД" и "ЗАК" должны быть видны фамилии из соответствующих колонок с возможностью выбора (по алфавиту и без повторов).
2. По кнопке "сортировка" вся страница должна перестраиваться таким образом, чтоб строчки с выбранной фамилией оказывались наверху, соответствующие ячейки выделялись цветом, упорядочивались по дате.
3. Если плюсом была бы возможность выбирать фамилию путем выделения ячейки - это был бы вообще праздник. :hands:

[p.s.]Заранее благодарен.[/p.s.]
[moder]Для решения этой задачи нужны три разные темы. Читайте Правила форума п.4. Альтернатива - перенос темы в платный раздел РАБОТА/ФРИЛАНС[/moder]
К сообщению приложен файл: 4166157.xlsm (23.6 Kb)


Сообщение отредактировал kirill-kibor - Воскресенье, 17.04.2016, 21:07
 
Ответить
Сообщение[offtop]Не могу больше руками...[/offtop]
[offtop]Начал сам, но чувствую - не то что-то делаю (в файле видно) [/offtop]
Здравствуйте! Помогите пожалуйста сделать следующее, если можно, то с комментариями (планирую поразбираться):
1. В выпадающих списках "ВОД" и "ЗАК" должны быть видны фамилии из соответствующих колонок с возможностью выбора (по алфавиту и без повторов).
2. По кнопке "сортировка" вся страница должна перестраиваться таким образом, чтоб строчки с выбранной фамилией оказывались наверху, соответствующие ячейки выделялись цветом, упорядочивались по дате.
3. Если плюсом была бы возможность выбирать фамилию путем выделения ячейки - это был бы вообще праздник. :hands:

[p.s.]Заранее благодарен.[/p.s.]
[moder]Для решения этой задачи нужны три разные темы. Читайте Правила форума п.4. Альтернатива - перенос темы в платный раздел РАБОТА/ФРИЛАНС[/moder]

Автор - kirill-kibor
Дата добавления - 17.04.2016 в 00:59
StoTisteg Дата: Воскресенье, 17.04.2016, 12:09 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Ну насчёт сделать — Елена права, это надо на темы разбивать, а общий принцип описать могу.
0) Убейте всё лишнее в результатах деятельности макрорекордера и опишите диапазоны в общем виде, примерно так:
[vba]
Код
Sub АНСОРТ()
    
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 11))
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
End Sub
[/vba]
1) Я бы стал делать не на ComboBox'ах, а на ListBox'ах. По мне так ComboBox предназначен для ввода с подсказкой, а не для выбора.
Ответы на второй и третий пункт удалены. Тема создана с нарушением Правил форума
[moder]Так и чешутся руки замечание влепить за ответы[/moder]


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал Pelena - Воскресенье, 17.04.2016, 12:24
 
Ответить
СообщениеНу насчёт сделать — Елена права, это надо на темы разбивать, а общий принцип описать могу.
0) Убейте всё лишнее в результатах деятельности макрорекордера и опишите диапазоны в общем виде, примерно так:
[vba]
Код
Sub АНСОРТ()
    
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 11))
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
End Sub
[/vba]
1) Я бы стал делать не на ComboBox'ах, а на ListBox'ах. По мне так ComboBox предназначен для ввода с подсказкой, а не для выбора.
Ответы на второй и третий пункт удалены. Тема создана с нарушением Правил форума
[moder]Так и чешутся руки замечание влепить за ответы[/moder]

Автор - StoTisteg
Дата добавления - 17.04.2016 в 12:09
StoTisteg Дата: Воскресенье, 17.04.2016, 13:22 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Ответы на второй и третий пункт удалены. Тема создана с нарушением Правил форума

Елена, так фишка в том, что ответ на третий вопрос снимает первый и второй, не? Хотя, конечно, надо признать, что ему не соответствует название темы. Тут каюсь и посыпаю голову пеплом. не обратил внимания :(


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Воскресенье, 17.04.2016, 13:24
 
Ответить
Сообщение
Ответы на второй и третий пункт удалены. Тема создана с нарушением Правил форума

Елена, так фишка в том, что ответ на третий вопрос снимает первый и второй, не? Хотя, конечно, надо признать, что ему не соответствует название темы. Тут каюсь и посыпаю голову пеплом. не обратил внимания :(

Автор - StoTisteg
Дата добавления - 17.04.2016 в 13:22
al-Ex Дата: Воскресенье, 17.04.2016, 13:42 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
Я бы стал делать не на ComboBox'ах, а на ListBox'ах.
Вот так, примерно:
К сообщению приложен файл: frm_sample03.xlsm (31.7 Kb)


Сообщение отредактировал al-Ex - Воскресенье, 17.04.2016, 21:04
 
Ответить
Сообщение
Я бы стал делать не на ComboBox'ах, а на ListBox'ах.
Вот так, примерно:

Автор - al-Ex
Дата добавления - 17.04.2016 в 13:42
StoTisteg Дата: Воскресенье, 17.04.2016, 14:06 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
[offtop] al-Ex, Вы уж извините, но антипаттерн "Волшебная Кнопка" у Вас в полный рост ;) [vba]
Код
GoTo exi
[/vba]Знаете, человек, который меня учил, однажды сказал так.
— Представьте себе, что на защите вашей докторской у вас прихватило живот и вы, не сдержавшись, шумно опорожнились в штаны, сопроводив это матерной тирадой. Так вот goto — это хуже.


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Воскресенье, 17.04.2016, 14:07
 
Ответить
Сообщение[offtop] al-Ex, Вы уж извините, но антипаттерн "Волшебная Кнопка" у Вас в полный рост ;) [vba]
Код
GoTo exi
[/vba]Знаете, человек, который меня учил, однажды сказал так.
— Представьте себе, что на защите вашей докторской у вас прихватило живот и вы, не сдержавшись, шумно опорожнились в штаны, сопроводив это матерной тирадой. Так вот goto — это хуже.

Автор - StoTisteg
Дата добавления - 17.04.2016 в 14:06
al-Ex Дата: Воскресенье, 17.04.2016, 14:43 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
[offtop]
антипаттерн "Волшебная Кнопка"
? что это.


Сообщение отредактировал al-Ex - Воскресенье, 17.04.2016, 14:49
 
Ответить
Сообщение[offtop]
антипаттерн "Волшебная Кнопка"
? что это.

Автор - al-Ex
Дата добавления - 17.04.2016 в 14:43
StoTisteg Дата: Воскресенье, 17.04.2016, 15:29 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Это когда вся логика программы спрятана в клик по кнопке, известной только её разработчику. Например, в Вашем случае чтобы посмотреть, что делает Ваша программа, надо зайти в форму UserForm1 (непонятно для чего предназначенную), потом догадаться, что все действия находятся в событиях кнопки CommandButton1. Вместо того, чтобы открыть "очевидный" код Module1 и прочитать всё там. Ну это хорошо, что у Вас всего один модуль и одна форма. А если модулей, называемых Module1 ... ModuleN в проекте дофига, форм дохрена, а элементов в них столько, что даже Me.Hide по событию Click/Change по каждому в один экран не влазят? А это не теоретический пример, я сам лично напейсал заполнение простенькой (по сравнению с П-1) статистической формы примерно таких масштабов.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеЭто когда вся логика программы спрятана в клик по кнопке, известной только её разработчику. Например, в Вашем случае чтобы посмотреть, что делает Ваша программа, надо зайти в форму UserForm1 (непонятно для чего предназначенную), потом догадаться, что все действия находятся в событиях кнопки CommandButton1. Вместо того, чтобы открыть "очевидный" код Module1 и прочитать всё там. Ну это хорошо, что у Вас всего один модуль и одна форма. А если модулей, называемых Module1 ... ModuleN в проекте дофига, форм дохрена, а элементов в них столько, что даже Me.Hide по событию Click/Change по каждому в один экран не влазят? А это не теоретический пример, я сам лично напейсал заполнение простенькой (по сравнению с П-1) статистической формы примерно таких масштабов.

Автор - StoTisteg
Дата добавления - 17.04.2016 в 15:29
al-Ex Дата: Воскресенье, 17.04.2016, 15:42 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
А если модулей, называемых Module1 ... ModuleN в проекте дофига
Тогда конечно, иначе решать надо.


Сообщение отредактировал al-Ex - Воскресенье, 17.04.2016, 15:46
 
Ответить
Сообщение
А если модулей, называемых Module1 ... ModuleN в проекте дофига
Тогда конечно, иначе решать надо.

Автор - al-Ex
Дата добавления - 17.04.2016 в 15:42
StoTisteg Дата: Воскресенье, 17.04.2016, 16:37 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Ну этот-то вопрос решается тем, что у модулей тоже параметр Name есть... А вот логика, засунутая туда, куда разработчик телят не гонял — это хужее. Я так потерял реализацию неплохой идеи — где-то в старых версиях она есть, вот бы её найти :)


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеНу этот-то вопрос решается тем, что у модулей тоже параметр Name есть... А вот логика, засунутая туда, куда разработчик телят не гонял — это хужее. Я так потерял реализацию неплохой идеи — где-то в старых версиях она есть, вот бы её найти :)

Автор - StoTisteg
Дата добавления - 17.04.2016 в 16:37
kirill-kibor Дата: Воскресенье, 17.04.2016, 20:26 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо всем огромное, ночью буду разбираться. Главное конечно не ComboBoxы и ListBoxы, а юзабилити. Пока почему-то не запускается. Дебагер ругается на это:

[vba]
Код
Private Sub lbx1_rfr()
UserForm1.ListBox1.Clear
For Each x In rngProd
If x.EntireRow.Hidden = False Then
For i = 0 To ListBox1.ListCount - 1
        If ListBox1.List(i) = x.Value Then
         GoTo exi
        End If
    Next i
      UserForm1.ListBox1.AddItem x.Value
exi:
End If
    Next x
  Label1.Caption = "Заказчик"
End Sub
[/vba]
 
Ответить
СообщениеСпасибо всем огромное, ночью буду разбираться. Главное конечно не ComboBoxы и ListBoxы, а юзабилити. Пока почему-то не запускается. Дебагер ругается на это:

[vba]
Код
Private Sub lbx1_rfr()
UserForm1.ListBox1.Clear
For Each x In rngProd
If x.EntireRow.Hidden = False Then
For i = 0 To ListBox1.ListCount - 1
        If ListBox1.List(i) = x.Value Then
         GoTo exi
        End If
    Next i
      UserForm1.ListBox1.AddItem x.Value
exi:
End If
    Next x
  Label1.Caption = "Заказчик"
End Sub
[/vba]

Автор - kirill-kibor
Дата добавления - 17.04.2016 в 20:26
StoTisteg Дата: Воскресенье, 17.04.2016, 20:32 | Сообщение № 11
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Переменные объявите явно и галки в библиотеках снимите. И вообще проще сделать по двойному клику, но модератор не дозволяет.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеПеременные объявите явно и галки в библиотеках снимите. И вообще проще сделать по двойному клику, но модератор не дозволяет.

Автор - StoTisteg
Дата добавления - 17.04.2016 в 20:32
kirill-kibor Дата: Воскресенье, 17.04.2016, 20:33 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Pelena! Простите Бога ради. Я же если все три вопроса по темам раскидаю, я ж потом в кучу все не соберу.
 
Ответить
СообщениеPelena! Простите Бога ради. Я же если все три вопроса по темам раскидаю, я ж потом в кучу все не соберу.

Автор - kirill-kibor
Дата добавления - 17.04.2016 в 20:33
kirill-kibor Дата: Воскресенье, 17.04.2016, 20:35 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
StoTisteg, По двойному клику на активной ячейке? Еще и проще? Что надо сделать, чтоб Pelena разрешила? Надо отдельную тему создать?
 
Ответить
СообщениеStoTisteg, По двойному клику на активной ячейке? Еще и проще? Что надо сделать, чтоб Pelena разрешила? Надо отдельную тему создать?

Автор - kirill-kibor
Дата добавления - 17.04.2016 в 20:35
StoTisteg Дата: Воскресенье, 17.04.2016, 20:35 | Сообщение № 14
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
А то, что пытался сделать al-Ex, работает так.
К сообщению приложен файл: Sort2.xlsm (24.6 Kb)


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеА то, что пытался сделать al-Ex, работает так.

Автор - StoTisteg
Дата добавления - 17.04.2016 в 20:35
StoTisteg Дата: Воскресенье, 17.04.2016, 20:40 | Сообщение № 15
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Надо отдельную тему создать?

Попробуйте, похоже, она именно так и считает. Назовите, например, "Сортировка таблицы по двойному клику в ячейке".


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Воскресенье, 17.04.2016, 20:41
 
Ответить
Сообщение
Надо отдельную тему создать?

Попробуйте, похоже, она именно так и считает. Назовите, например, "Сортировка таблицы по двойному клику в ячейке".

Автор - StoTisteg
Дата добавления - 17.04.2016 в 20:40
Pelena Дата: Воскресенье, 17.04.2016, 20:41 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
модератор не дозволяет
Что Вам модератор не дозволяет? Ответить на первый вопрос?

kirill-kibor, Правила для всех одинаковые. В этой теме решаем первую задачу. Для остальных создаём новые темы.
И эту тему переименуйте в "Выпадающий список с сортировкой без повторов"


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
модератор не дозволяет
Что Вам модератор не дозволяет? Ответить на первый вопрос?

kirill-kibor, Правила для всех одинаковые. В этой теме решаем первую задачу. Для остальных создаём новые темы.
И эту тему переименуйте в "Выпадающий список с сортировкой без повторов"

Автор - Pelena
Дата добавления - 17.04.2016 в 20:41
StoTisteg Дата: Воскресенье, 17.04.2016, 20:43 | Сообщение № 17
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Pelena, по мне так задача одна и та же — получить отфильтрованную таблицу, а "вопросы" — просто предположения о том, как её можно решить.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеPelena, по мне так задача одна и та же — получить отфильтрованную таблицу, а "вопросы" — просто предположения о том, как её можно решить.

Автор - StoTisteg
Дата добавления - 17.04.2016 в 20:43
Pelena Дата: Воскресенье, 17.04.2016, 20:45 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
StoTisteg, прочитайте ещё раз первый пункт топика. Где там фильтрация таблицы?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеStoTisteg, прочитайте ещё раз первый пункт топика. Где там фильтрация таблицы?

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

2010
[offtop]Лен, веником все его сто, и в БАНю! Не будет спорить! :) [/offtop]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[offtop]Лен, веником все его сто, и в БАНю! Не будет спорить! :) [/offtop]

Автор - RAN
Дата добавления - 17.04.2016 в 20:49
StoTisteg Дата: Воскресенье, 17.04.2016, 20:54 | Сообщение № 20
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
[offtop]Так я и не спорю. Модератор распорядилась на третий вопрос не отвечать, я и не отвечаю...


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение[offtop]Так я и не спорю. Модератор распорядилась на третий вопрос не отвечать, я и не отвечаю...

Автор - StoTisteg
Дата добавления - 17.04.2016 в 20:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выпадающий список с сортировкой без повторов (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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