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

Вход

Регистрация

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

 

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

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 212»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир 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(24Kb)


Сообщение отредактировал 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
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 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]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал 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
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

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

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

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

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

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

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


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

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

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 56 ±
Замечаний: 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
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

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


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

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

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеНу этот-то вопрос решается тем, что у модулей тоже параметр 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
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеПеременные объявите явно и галки в библиотеках снимите. И вообще проще сделать по двойному клику, но модератор не дозволяет.

Автор - 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
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеА то, что пытался сделать al-Ex, работает так.

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

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

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

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

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

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

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

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


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

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

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

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеPelena, по мне так задача одна и та же — получить отфильтрованную таблицу, а "вопросы" — просто предположения о том, как её можно решить.

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

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


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

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

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


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

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

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


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение[offtop]Так я и не спорю. Модератор распорядилась на третий вопрос не отвечать, я и не отвечаю...

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

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