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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос для выпадающего списка - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для выпадающего списка (Макросы/Sub)
Макрос для выпадающего списка
Огонек Дата: Пятница, 03.06.2016, 20:09 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Хочу организовать фильтрацию по столбцу D через ДропДаун, его содержимое заполняется из списка уникальных значений столбца D, который находится на листе 2.
Помогите в написании макроса, который при выборе Названия фирмы в списке фильтрует таблицу, при выборе "Все" - снимает фильтр.
К сообщению приложен файл: 4984609.xlsx(15Kb)


Сообщение отредактировал Огонек - Пятница, 03.06.2016, 20:09
 
Ответить
СообщениеХочу организовать фильтрацию по столбцу D через ДропДаун, его содержимое заполняется из списка уникальных значений столбца D, который находится на листе 2.
Помогите в написании макроса, который при выборе Названия фирмы в списке фильтрует таблицу, при выборе "Все" - снимает фильтр.

Автор - Огонек
Дата добавления - 03.06.2016 в 20:09
Nic70y Дата: Пятница, 03.06.2016, 20:39 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3669
Репутация: 761 ±
Замечаний: 0% ±

Excel 2013
А обычный фильтр не подходит?


ЯД(poison) 41001841029809
+7 978 049 98 74 (мтс)
 
Ответить
СообщениеА обычный фильтр не подходит?

Автор - Nic70y
Дата добавления - 03.06.2016 в 20:39
Огонек Дата: Пятница, 03.06.2016, 20:49 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Для меня лично подходит.
Но этот файл предназначен для изначально "изнеженных" пользователей, некоторые из которых считают слово Фильтр очень ругательным словом.
 
Ответить
СообщениеДля меня лично подходит.
Но этот файл предназначен для изначально "изнеженных" пользователей, некоторые из которых считают слово Фильтр очень ругательным словом.

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

2010
считают слово Фильтр очень ругательным словом

Используйте слово "ДропДаун". :D
А сей макрос вполне пишется макрорекордером.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 03.06.2016, 21:02
 
Ответить
Сообщение
считают слово Фильтр очень ругательным словом

Используйте слово "ДропДаун". :D
А сей макрос вполне пишется макрорекордером.

Автор - RAN
Дата добавления - 03.06.2016 в 21:01
Огонек Дата: Пятница, 03.06.2016, 21:09 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Естественно пробовал.
Вопрос сводится к одному: что записать после Criteria1:= ?
Этот вариант не работает. Впрочем как и другие, которые я пробовал.

[vba]
Код
Dim newf As Single
newf = Range("Лист2!$B$1")
If newf = 1 Then
Selection.AutoFilter
Else
Range("A3:L3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$L$26").AutoFilter Field:=3, Criteria1:="=Index(""Лист2!$A$1:$A$18"", newf)"
Selection.AutoFilter
End If
[/vba]
[moder]Оформляйте коды тегами (кнопка #). На первый раз поправила[/moder]


Сообщение отредактировал Pelena - Пятница, 03.06.2016, 21:48
 
Ответить
СообщениеЕстественно пробовал.
Вопрос сводится к одному: что записать после Criteria1:= ?
Этот вариант не работает. Впрочем как и другие, которые я пробовал.

[vba]
Код
Dim newf As Single
newf = Range("Лист2!$B$1")
If newf = 1 Then
Selection.AutoFilter
Else
Range("A3:L3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$L$26").AutoFilter Field:=3, Criteria1:="=Index(""Лист2!$A$1:$A$18"", newf)"
Selection.AutoFilter
End If
[/vba]
[moder]Оформляйте коды тегами (кнопка #). На первый раз поправила[/moder]

Автор - Огонек
Дата добавления - 03.06.2016 в 21:09
Roman777 Дата: Пятница, 03.06.2016, 22:02 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 720
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Огонек, попробуйте так:
[vba]
Код
Sub DropDown1_Сhange()
Dim obj
Set obj = Sheets(1).DropDowns(1)
    If obj.List(obj.ListIndex) <> "" Then
       If obj.List(obj.ListIndex) <> "Все" Then
          ActiveSheet.Range("D:D").AutoFilter Field:=1, Criteria1:=obj.List(obj.ListIndex)
       Else
          ActiveSheet.Range("D:D").AutoFilter Field:=1
       End If
    End If
End Sub
[/vba]
К сообщению приложен файл: 4984609-2-.xlsm(24Kb)


Много чего не знаю!!!!
 
Ответить
СообщениеОгонек, попробуйте так:
[vba]
Код
Sub DropDown1_Сhange()
Dim obj
Set obj = Sheets(1).DropDowns(1)
    If obj.List(obj.ListIndex) <> "" Then
       If obj.List(obj.ListIndex) <> "Все" Then
          ActiveSheet.Range("D:D").AutoFilter Field:=1, Criteria1:=obj.List(obj.ListIndex)
       Else
          ActiveSheet.Range("D:D").AutoFilter Field:=1
       End If
    End If
End Sub
[/vba]

Автор - Roman777
Дата добавления - 03.06.2016 в 22:02
Огонек Дата: Пятница, 03.06.2016, 22:36 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Roman777, Спасибо

А сей макрос вполне пишется макрорекордером.

Не очень вполне.
 
Ответить
СообщениеRoman777, Спасибо

А сей макрос вполне пишется макрорекордером.

Не очень вполне.

Автор - Огонек
Дата добавления - 03.06.2016 в 22:36
Огонек Дата: Пятница, 03.06.2016, 23:24 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Roman777, есть еще вопросик.
Макрорекордер "определяет" объект как [vba]
Код
ActiveSheet.Shapes("Drop Down 1")
[/vba]
Как узнать соответствие между [vba]
Код
.Shapes("Drop Down 1")
[/vba] и [vba]
Код
.DropDowns(1)
[/vba]?
[moder]Ещё раз: оформляйте коды тегами[/moder]


Сообщение отредактировал Pelena - Суббота, 04.06.2016, 08:46
 
Ответить
СообщениеRoman777, есть еще вопросик.
Макрорекордер "определяет" объект как [vba]
Код
ActiveSheet.Shapes("Drop Down 1")
[/vba]
Как узнать соответствие между [vba]
Код
.Shapes("Drop Down 1")
[/vba] и [vba]
Код
.DropDowns(1)
[/vba]?
[moder]Ещё раз: оформляйте коды тегами[/moder]

Автор - Огонек
Дата добавления - 03.06.2016 в 23:24
Nic70y Дата: Суббота, 04.06.2016, 08:20 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3669
Репутация: 761 ±
Замечаний: 0% ±

Excel 2013
Мой вариант, назначаем макрос DropDowns
[vba]
Код
Sub f__01()
Application.ScreenUpdating = 0
    u = Sheets(2).[b1]
    If Sheets(2).Cells(1, 2) <> 1 Then
    ActiveSheet.Range("D:D").AutoFilter Field:=1, Criteria1:=Sheets(2).Cells(u, 1)
    Else
    ActiveSheet.Range("D:D").AutoFilter Field:=1
    End If
Application.ScreenUpdating = 1
End Sub
[/vba]
К сообщению приложен файл: 4984609.xlsm(24Kb)


ЯД(poison) 41001841029809
+7 978 049 98 74 (мтс)
 
Ответить
СообщениеМой вариант, назначаем макрос DropDowns
[vba]
Код
Sub f__01()
Application.ScreenUpdating = 0
    u = Sheets(2).[b1]
    If Sheets(2).Cells(1, 2) <> 1 Then
    ActiveSheet.Range("D:D").AutoFilter Field:=1, Criteria1:=Sheets(2).Cells(u, 1)
    Else
    ActiveSheet.Range("D:D").AutoFilter Field:=1
    End If
Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 04.06.2016 в 08:20
Roman777 Дата: Суббота, 04.06.2016, 08:56 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 720
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Огонек, Честно, я первый раз столкнулся с таким объектом (ДропДаун). Вот поигрался, мб Вас наведёт на мысли. Вы с помощью F8 пошагово пройдитесь.
[vba]
Код
Sub test()
Dim obj
Set obj = Sheets(1).DropDowns(1)
MsgBox (obj.Name)
Sheets(1).Shapes("1").Select
Cells(1, 1).Select
obj.Name = "ДропДавнс1"
MsgBox (obj.Name)
Sheets(1).Shapes("ДропДавнс1").Select
Cells(1, 1).Select
Sheets(1).DropDowns(1).Select
Cells(1, 1).Select
Sheets(1).DropDowns ("ДропДавнс1")
obj.Name = "1"
End Sub
[/vba]
Надо отличать :[vba]
Код
.DropDowns(1)
[/vba] - обращение по порядковому номеру и [vba]
Код
.DropDowns("1")
[/vba] - обращение по имени объекта.
Для меня больше загадка, почему и как этот объект может относиться и к элементам Shapes и к элементам DropDowns... я думал, что в таких случаях одно множество должно принадлежать другому, но что-то эксперименты не подтвердили это).
К сообщению приложен файл: 2715006.xlsm(24Kb)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Суббота, 04.06.2016, 08:56
 
Ответить
СообщениеОгонек, Честно, я первый раз столкнулся с таким объектом (ДропДаун). Вот поигрался, мб Вас наведёт на мысли. Вы с помощью F8 пошагово пройдитесь.
[vba]
Код
Sub test()
Dim obj
Set obj = Sheets(1).DropDowns(1)
MsgBox (obj.Name)
Sheets(1).Shapes("1").Select
Cells(1, 1).Select
obj.Name = "ДропДавнс1"
MsgBox (obj.Name)
Sheets(1).Shapes("ДропДавнс1").Select
Cells(1, 1).Select
Sheets(1).DropDowns(1).Select
Cells(1, 1).Select
Sheets(1).DropDowns ("ДропДавнс1")
obj.Name = "1"
End Sub
[/vba]
Надо отличать :[vba]
Код
.DropDowns(1)
[/vba] - обращение по порядковому номеру и [vba]
Код
.DropDowns("1")
[/vba] - обращение по имени объекта.
Для меня больше загадка, почему и как этот объект может относиться и к элементам Shapes и к элементам DropDowns... я думал, что в таких случаях одно множество должно принадлежать другому, но что-то эксперименты не подтвердили это).

Автор - Roman777
Дата добавления - 04.06.2016 в 08:56
KuklP Дата: Суббота, 04.06.2016, 09:32 | Сообщение № 11
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 439 ±
Замечаний: 20% ±

Пример для двух видов комбобоксов.
К сообщению приложен файл: ComboboxDropdow.xlsm(53Kb)


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Суббота, 04.06.2016, 09:35
 
Ответить
СообщениеПример для двух видов комбобоксов.

Автор - KuklP
Дата добавления - 04.06.2016 в 09:32
Огонек Дата: Суббота, 04.06.2016, 13:30 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Всем спасибо!
 
Ответить
СообщениеВсем спасибо!

Автор - Огонек
Дата добавления - 04.06.2016 в 13:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для выпадающего списка (Макросы/Sub)
Страница 1 из 11
Поиск:

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